Shell脚本命令合集

Posted 数羊人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本命令合集相关的知识,希望对你有一定的参考价值。

#!/bin/sh


grep -c      #只输出匹配行的计数。

grep -i      #不区分大小写(只适用于单字符)。

grep -h      #查询多文件时不显示文件名。

grep -l      #查询多文件时只输出包含匹配字符的文件名。

grep -n      #显示匹配行及行号。

grep -s      #不显示不存在或无匹配文本的错误信息。

grep -v      #显示不包含匹配文本的所有行。



sed -i 's/^str1.*/str2/'  filename        #以str1开头的行替换成str2

sed -i 's/.*str1$/str2/'  filename        #以str1结尾的行替换成str2

sed -i 's/.*str1.*/str2/'  filename       #含有str1的行替换成str2

sed -e '/arr/s/str1/str2/g' filename      #将文件中含 "arr" 字符串的数据行中的 "str1" 字符串 , 替换成为 "str2" 字符串,含有g说明是全局替换

sed -e '5c\hello world!!!' filename       #将文件中第 5 行数据 , 替换成句子"hello world!!!"

sed -e '/^ *$/d' filename                 #删除空行,*号前面有一个空格符

sed -f '/str/d' filename                  #删除含有指定字符串str的行




cut -d   #按指定的分隔字符将字符串分割成数段,常与 -f 一起使用。

cut -f   #依据-d的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思。

cut -c   #以字符 (characters) 的单位取出固定字符区间。



$$          #Shell本身的PID(ProcessID)

$!          #Shell最后运行的后台Process的PID

$?          #最后运行的命令的结束代码(返回值) 

$-          #使用Set命令设定的Flag一览 

$*          #所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 

$@          #所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$#          #添加到Shell的参数个数 

$0          #Shell本身的文件名 

$1~$n      #添加到Shell的各参数值。$1是第1参数、$2是第2参数…。


关于if条件判断总结

文件/目录判断:

[ -a FILE ] 如果 FILE 存在则为真。

[ -b FILE ] 如果 FILE 存在且是一个块文件则返回为真。

[ -c FILE ] 如果 FILE 存在且是一个字符文件则返回为真。

[ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。

[ -e FILE ] 如果 指定的文件或目录存在时返回为真。

[ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。

[ -g FILE ] 如果 FILE 存在且设置了SGID则返回为真。

[ -h FILE ] 如果 FILE 存在且是一个符号符号链接文件则返回为真。(该选项在一些老系统上无效)

[ -k FILE ] 如果 FILE 存在且已经设置了冒险位则返回为真。

[ -p FILE ] 如果 FILE 存并且是命令管道时返回为真。

[ -r FILE ] 如果 FILE 存在且是可读的则返回为真。

[ -s FILE ] 如果 FILE 存在且大小非0时为真则返回为真。

[ -u FILE ] 如果 FILE 存在且设置了SUID位时返回为真。

[ -w FILE ] 如果 FILE 存在且是可写的则返回为真。(一个目录为了它的内容被访问必然是可执行的)

[ -x FILE ] 如果 FILE 存在且是可执行的则返回为真。

[ -O FILE ] 如果 FILE 存在且属有效用户ID则返回为真。

[ -G FILE ] 如果 FILE 存在且默认组为当前组则返回为真。(只检查系统默认组)

[ -L FILE ] 如果 FILE 存在且是一个符号连接则返回为真。

[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则返回为真。

[ -S FILE ] 如果 FILE 存在且是一个套接字则返回为真。

[ FILE1 -nt FILE2 ] 如果 FILE1 比 FILE2 新, 或者 FILE1 存在但是 FILE2 不存在则返回为真。

[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 老, 或者 FILE2 存在但是 FILE1 不存在则返回为真。

[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则返回为真。



字符串判断:

[ -z STRING ] 如果STRING的长度为零则返回为真,即空是真

[ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真

[ STRING1 ]  如果字符串不为空则返回为真,与-n类似

[ STRING1 == STRING2 ] 如果两个字符串相同则返回为真

[ STRING1 != STRING2 ] 如果字符串不相同则返回为真

[ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面则返回为真。

[ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。



数值判断:

[ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,=

[ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 ,<>

[ INT1 -gt INT2 ] INT1大于INT2返回为真 ,>

[ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>=

[ INT1 -lt INT2 ] INT1小于INT2返回为真 ,<

[ INT1 -le INT2 ] INT1小于等于INT2返回为真,<=



逻辑判断:

[ ! EXPR ] 逻辑非,如果 EXPR 是false则返回为真。

[ EXPR1 -a EXPR2 ] 逻辑与,如果 EXPR1 and EXPR2 全真则返回为真。

[ EXPR1 -o EXPR2 ] 逻辑或,如果 EXPR1 或者 EXPR2 为真则返回为真。

[ ] || [ ] 用OR来合并两个条件

[ ] && [ ] 用AND来合并两个条件



其他判断:

[ -t FD ] 如果文件描述符 FD (默认值为1)打开且指向一个终端则返回为真

[ -o optionname ] 如果shell选项optionname开启则返回为真


以上是关于Shell脚本命令合集的主要内容,如果未能解决你的问题,请参考以下文章

整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新!

自编shell脚本合集(完善中)

Linux远程执行Shell命令或脚本

shell脚本中的 exec 命令

linux下shell脚本命令

shell脚本经典题之函数应用