Linux命令、VIM、Shell脚本
Linux环境
Windows10使用Linux的Windows子系统:https://www.bilibili.com/video/BV1CJ411F7Ax?
from=search&seid=3123114751993441823
Linux常用快捷键
Tab 【补齐】
Ctrl + A 【光标最前面】
Ctrl + E 【光标最后面】
Ctrl + U 【光标清除】
上、下【切换之前输入的命令】
Linux文件操作
cd file 【进入目录】
cd .. 【返回上一级目录】
cd . 【就是在当前目录 相当于啥事都没有做了】
cd 【回到根目录】
pwd 【查看当前路径】
ls 【大概目录】
ls -all 【详细目录】
ls -lh 【xxKB,详细目录】
clear 【清除屏幕】
date 【服务器的时间】
mkdir NDK24 【创建文件夹】
touch file01.txt 【创建文件】
ls -all 【查看全部】
-rw-r--r-- 1 root root 0 Apr 25 20:33 file01.txt
文件权限 软链接数(Win快捷方式) 当前root 所属组 0大小 时间
rm -rf file02.txt 【删除文件】
ls -R 【查看 目录、文件夹 里面的详情】
ls -all 【查看全部】
-rw-r--r-- 1 root root 0 Apr 25 20:33 file01.txt
- 【普通文件】
d 【目录】
l 【软链接(Win快捷方式】
c 【字符设备文件】
b 【块设备文件】
p 【管道】
s 【套接字】
rm New02/ 【没法递归遍历删除】
rm -rf New02/ 【递归遍历删除】
cp f.txt New/ 【copy f文件 New文件夹】
mv f.txt fff.txt 【重命名】
vim :wq w保存 q退出
Linux文件读取
临时环境变量:我关闭窗口后,就消失了回话
export AAAA=1234567
echo $AAAA
全局环境变量:一直存在系统中
vim /etc/profile 加入 export jin="jin爆了"
source profile 【修改的生效】
echo $jincat file05.txt 【快速查看,只读的】
vim file05.txt 【C C++ 高亮】
vi file05.txt 【无 C C++ 高亮】
tac file05.txt 【倒序查看内容】
more file05.txt 【百分百查看 相当于分页 敲回车分页】
head -2 profile【查看两行 前面的】
tail -3 profile【查看3行 后面的】
Linux中的用户与用户组
ls -all
-rw-r--r-- 1 root root 0 Apr 25 21:26 file02.txt
chmod 777 file02.txt 【获取可读可写可执行权限】
-rwxrwxrwx 1 root root 0 Apr 25 21:26 file02.txt
- 文件类型 d 目录
rwx 【第一组:当前自身所在用户权限 rwx 可读可写可执行】
rwx 【第二组:代表同组的权限 rwx 可读可写可执行】
rwx 【第三组:代表其他用户的权限 rwx 可读可写可执行】数字限定:777 【4可读 2可写 1可执行】 = 7
chmod 777 file04.txt 【可读可写可执行,可读可写可执行,可读可写可执行】
-rwxrwxrwx 1 root root 0 Apr 25 21:44 file04.txt字母限定发: 纠结: w写 r读 x可执行
chmod 000 file04.txt 【取出所有权限】
chmod +x file04.txt 【默认三组 可执行】
---x--x--x 1 root root 0 Apr 25 21:44 file04.txt
chmod +r file04.txt 【默认三组 可读】
-r--r--r-- 1 root root 0 Apr 25 21:44 file04.txt
chmod +w file04.txt 【第一组 可写】
--w------- 1 root root 0 Apr 25 21:44 file04.txt
u user(第一组)
g group(第二组)
o other(第三组)
a all (所有组)
chmod u+rwx file04.txt 【专门给第一组 加入 可读可写可执行】
-rwx------ 1 root root 0 Apr 25 21:44 file04.txt
chmod g+rwx file04.txt 【专门给第二组 加入 可读可写可执行】
----rwx--- 1 root root 0 Apr 25 21:44 file04.txt
chmod g+rwx file04.txt 【专门给第三组 加入 可读可写可执行】
-------rwx 1 root root 0 Apr 25 21:44 file04.txt
chmod a+rwx file04.txt 【三组全部 ,可读可写可执行,相当于 777】
-rwxrwxrwx 1 root root 0 Apr 25 21:44 file04.txt
VIM使用
vim file05.txt
默认是命令模式,输入 i 进入编辑模式,下面标记会出现 INSERTXX
aaa
aaa
aa
按 esc 键 进入 命令模式
按 : 进入 末行模式 输入 wq在命令模式下操作
u 【撤销 恢复】
i 【输入 ,光标不动】
I 【输入,光标前面】
a 【输入 ,光标退后一个】
A 【输入 ,光标到行末尾】
s 【输入 ,光标删除所在字符】
S 【输入 ,光标删除所在整行】
:q! 【强制退出,不保存】
h 【左】
j 【下】
享学课堂
赋值粘贴
查找替换
分屏操作
03-Shell语法之 变量的定义与使用
vim test01.sh
k 【上】
l 【右】
5G 【跳转到多行】 【不常用】
gg 【第一行】
G 【最后一行】
:set number 【显示行号】
$ 【行尾】
0 【行首】
dw 【删除单词】
dd 【删除一行】
3dd 【删除三行】
yy 【复杂一行】
dd 【剪切一行】
p 【刚刚yy、dd复杂/剪切的,粘贴到当前光标行】
P 【刚刚yy,dd复杂剪切的,粘贴到下一行】
/define【查找 define内容】
r + p 【把当前光标的字符替换成 p】
:s /printf/printxxx 【光标所在行,替换成printxxx】
1,6s /printf/printxxx/g 【1 ~ 6行 替换成printxxx,默认从第一行开始】
:%s /printf/printxxx/g 【整个代码,把所有的printf 替换 printxxx】
:vsp 【左右两个屏幕】
:sp 【上下两个屏幕】
ctrl + ww 【切换屏幕】
q 【退出当前屏幕】
wqall 【退出全部屏幕】
chomd 777 test01.sh
./test01.sh 【mac测试,其他的Linux服务器测试 都没有问题】
/bin/bash test01.sh 【调用解释器 bash】
sh test01.sh 【调用解释器 sh】
[root@iZuf65b1ojlcudtv4gurq7Z NDK25]# sh test01.sh
Derry Success
[root@iZuf65b1ojlcudtv4gurq7Z NDK25]# /bin/bash test01.sh
Derry Success
[root@iZuf65b1ojlcudtv4gurq7Z NDK25]#
vim编写C/C++开发
vim T1.c
gcc T1.c -o T1 【-o代表输出的意思,输出T1这个可执行文件】
./T1
Shell语法
vim test01.sh
chomd 777 test01.sh
./test01.sh 【调用解释器 sh】
/bin/bash test01.sh 【调用解释器 bash】
sh test01.sh 【调用解释器 sh】
echo $? 监测上一个命令成功情况 0 成功
#!bin/bash
# 相当于弱类型的语法,注意:不能搞中文输入法
# 我才是注释
# A = 10 A= 10 错误的写法
A=10
echo "Success"
echo A==$A
sh test02.sh AAA BBB
#!bin/bash
echo "AAAAAAAAAAAAAAAAAA"
age=99
echo age: $age
echo PWD: $PWD
#-----------------------
echo 当前Shell脚本的名称是: $0
echo 参数一:$1
echo 参数二:$2
#----------------------
echo "本次执行状态如下:"
if(($?));then
echo "本次执行失败"
else
echo "本次执行成功"
fi
echo "外界传递了参数内容是:this\ is $*"
echo "外界传递了参数的数量: this\ is $#"
Shell循环+文件读写
seq 1 10 【内置 1 到 10 输出打印】
#!/bin/bash
# 使用 `seq 1 20` 作为我们的数据源,然后我们遍历这个数据源,学习循环操作
for i in `seq 1 20`
do
echo "遍历的数字是:$i"
done
expr 200 + 300 【内置的 做运算】
#!/bin/bash
# 做累加操作
# 这里不要有空格
a=0
for((f=0;f<=100;f++))
do
# 注意:加的时候,必须加空格,否则有问题
a=`expr $f + $a`
done
echo "最后累加1~100的值是:$a"
Shell指定某些类型文件的打压缩包功能
find . -name "*.sh" 【查找.sh文件】
tar czf all.taz *.sh 【把所有的 sh文件,压缩成包 all.taz】
#!/bin/bash
# 查找当前目录下,所有的.sh文件,进行打包操作
for i in `find . -name "*.sh"`
do
tar -czf derryAll.tgz $i
done
#!/bin/bash
# 查找当前目录下,所有的.sh文件,进行打包操作
a=0
for i in `find . -name "*.sh"`
do
a=`expr $a + 1`
tar -czf all+$a.tgz $i
done
Shell While循环
#!/bin/bash
i=0
while((i<100))
do
i=`expr $i + 1`
echo "遍历的值:$i"
done
Shell读文件
注意:必须先有file01.txt 文件
#!/bin/bash
# 读取文件里面的内容,然后打印出来
# 得到当前的目录路径
echo $PWD
echo `pwd`
# --------------
while read lineVarAA
do
享学课堂
09-if语句 语法详解:
10-算数运算符:
echo $lineVarAA
done<`pwd`/file01.txt
Shell if语句
#!/bin/bash
NUM1=100
NUM2=200
if(($NUM1>$NUM2));then
echo "OK"
else
echo "else"
fi
if(($NUM1<$NUM2));then
echo "OK"
fi
Shell 算数运算符
#!/bin/bash
var1="abcde"
var2="zzzzz"
# 判断是否相等
if [ $var1 = $var2 ]
then
echo "等于"
else
echo "不等于"
fi
Shell 重定向
屏幕 < 内容 【右到左 重定向】
cat 屏幕的内容 AAAAAAAAAAAAAAAAAAAAA
cat 0< file01.txt 【0代表屏幕的标记 < 把内容重定向到 屏幕 所以显示】屏幕 > 内容 【左到右 重定向】
echo CCCCCCCCCCCCCC > file02.txt
Shell 函数
#!/bin/bash
# 函数的学习
function test01() {
echo "我是一个函数"
}
test01 # 调用此函数
# -----
# 函数里面是可以定义变量的,不要去考虑,堆 栈 弹栈,他就是脚本
function test02() {
var1="Kevin"
var2="Derry"
echo $var1
echo $var2
echo "我是一个函数"
}
# 函数传递参数 重点
function test03() {
echo "我是一个函数,参数是:`expr $1`"
}
test03 99999 # 内置传递参数
# 函数传递参数 重点
function test04() {
echo "我是一个函数,参数是:`expr $1`"
}
test04 $1 # 脚本配合 内置传递参数
function test05() {
echo "我是一个函数,参数是:`expr $1`"
}
test05 $1 # 脚本配合 内置传递参数