常用命令
dirname
获取某个目录或文件的路径
dirname /etc/host ## /etc
dirname /etc ## .
exit 0
exit (0): 正常运行程序并退出程序
exit (1): 非正常运行程序导致退出程序
grep
- -a 不忽略二进制的数据
- -i 忽略大小写
- -E 正则
- -v 排除
- -C 前后多少行
- -A 前几行
- -B 后几行
awk
awk [选项参数] ‘script’ var=value file(s)
- -F 指定分隔符
- -v 设置变量
## 每行按空格或tab分割取地一个第四个
awk '{print $1,$4}' log.txt
## 每行按,分割取1、2个
awk -F, '{print $1,$2}' log.txt
awk 'BEGIN{FS=","} {print $1,$2}' log.txt
## 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
awk -F '[ ,]' '{print $1,$2,$5}' log.txt
## 设置变量
awk -va=1 '{print $1,$1+a}' log.txt
运算符
- 加法
expr $a + $b
结果为 30。 - 减法
expr $a - $b
结果为 -10。 - 乘法
expr $a \* $b
结果为 200。 - 除法
expr $b / $a
结果为 2。 - 取余
expr $b % $a
结果为 0。 - 赋值 a=$b 把变量 b 的值赋给 a。
- 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
- 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
- -eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
- -ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
- -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
- -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
- -ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
- -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
布尔运算
- ! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
- o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
- a 与运算,两个表达式都为 true 才返回 true。
字符串
- = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
- != 检测两个字符串是否不相等,不相等返回 true。 [ $a != $b ] 返回 true。
- -z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
- -n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n “$a” ] 返回 true。
- $ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
文件
- -b file 检测文件是否是块设备文件,如果是,则返回 true。
[ -b $file ] 返回 false。 - -c file 检测文件是否是字符设备文件,如果是,则返回 true。
[ -c $file ] 返回 false。 - -d file 检测文件是否是目录,如果是,则返回 true。
[ -d $file ] 返回 false。 - -f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
- -g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
- -k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
- -p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
- -u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
- -r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
- -w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
- -x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
- -s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
- -e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
tr
转换或删除文件中的字符
## 转换大小写
cat testfile |tr a-z A-Z
bc
可以做基本的数学运算
echo 'scale=2; (2.777 - 1.4744)/1' | bc
find
在指定目录下查找文件
find path -option [ -print ] [ -exec -ok command ] {} \
## 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
find . -name "*.c"
将当前目录及其子目录中的所有文件列出:
# find . -type f
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
# find . -ctime -20
scp
Linux 之间复制文件和目录
scp [可选参数] file_source file_target
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
pwd
当前路径
sed
利用脚本来处理文本文件
- -s 取代
sed [-hnV][-e<script>][-f<script文件>][文本文件]
删除空格
sed s/[[:space:]]//g
搜寻
sed -n '/root/p'
date
date -d '10 minuties ago' +'%Y-%m-%d%H:%M:%S'
按指定格式显示时间
ls
显示指定工作目录下内容
-l 显示详细信息,包括文件名称、类型、权限、拥有者、文件大小
-r 文件以相反顺序显示
-t 按建立时间先后次序列出