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脚本等---------持续更新!