您的位置:首页 > 运维架构 > Linux

Linux--Shell脚本常用命令

2019-08-19 12:12 211 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zhangyukai9579/article/details/99710894

diff

比较两个文件或目录的不同

diff test1 test2

diff test1 test2

test2 文件 test 后面有一个空格

-b

不检查空格字符不同

diff -b test1 test2

-B

不检查空白行

diff test1 test2

diff -B test1 test2

test2 文件必比 test1 文件多了一行空行

-c

显示全部内容,并标出不同之处

diff -c test1 test2

test1 与 test2 时间戳不同

test2 多了 一行内容:123

-i

不检查大小写的不同

diff test1 test2

test1 内容 test

test2 内容第一行:tEst

第二行:123

diff -i test1 test2

只显示 test2 不同,多了一行 123

忽略掉检查大小写

-q

仅显示有无差异,不显示详细的信息

diff test1 test2

diff -q test1 test2

提示文件 test1 与 test2 有不同之处,不显示不同之处

-r

比较子目录中的文件

ls /d1 /d2

/d1/test1

/d2/test1

diff -r /d1/test1 /d2/test1

/d2/test1 比 /d1/test1 多了一行内容:123

/d2/test1 是大写 S

/d1/test1 是小写 s

-u

以合并的方式来显示文件内容的不同

diff -u test1 test2

diff -u test1 test2 > test.path

test1 与 test2 不同之处,导入到 test.path (补丁)文件中

patch

用于不同文件之间打补丁

patch -b

yum install patch -y

patch -b test1 test.path

给 test1 文件打 test.path 补丁 使 test1 文件与 test2 文件相同

cat test1 test2

cut

多用于字符的截取

cut -d

指定分隔符

cut -f

指定截取的列

cut -c

指定截取的字符位置

实验

截取 ifconfig eth0 命令显示中的 ip :“172.25.254.330”

ifconfig eth0

ifconfig eth0 | head -n 2 | tail -n 1 | cut -c 14-28

头部2行 | 尾部一行 | 截取第 14 至 28 字符

172.25.254.230

截取 /etc/passwd 文件中第二行的 “nologin”

cat passwd | head -n 2 | tail -n 1 | cut -d : -f 7 | cut -d / -f 3

头部 2 行 | 尾部 1 行 | 截取以:分隔的第七列中的以 / 分隔的第三列

head -n 2 | tail -n 1 | cut -d : -f 1,3,5

头部 2 行 | 尾部 1行 | 分别截取以 : 分隔的第一、三、五列

sort

用于字符排序

-n

纯数字排序
sort -n test

-r

倒序
sort -r test

sort -rn test

-u

去掉重复数字
sort -u test

sort -nru test

-o

输出到指定文件中

-t

指定分隔符

-k

指定要排序的列

sort -nr test | uniq -c | sort -t " " -k 2

指定每行显示一次并且按照分隔符空格排序两列

sort -nr test | uniq -c | sort -t " " -k 2 -r

指定每行显示一次并且按照分隔符空格排序两列并且倒序排列

sort -nr test | uniq -c | sort -t " " -k 2 -r | head -1

指定每行显示一次并且按照分隔符空格排序两列并且倒序排列抓取第一行

sort -nr test | uniq -c | sort -t " " -k 2 -r -o test1

指定每行显示一次并且按照分隔符空格排序两列并且倒序排列输出到 test1 文件内

cat test1

uniq

对重复字符做相应处理

-u

显示唯一的行
uniq -u test

-d

显示重复的行
uniq -d test

-c

每行显示一次并统计重复次数
uniq -c test

&& 和 ||

&&
用来执行条件成立后执行的命令

||
用来执行条件不成立后执行的命令

实验

vim /ping.sh

ping -w1 -c1 $1 > /dev/null && echo "$1 is up" || echo "$1 is down"

sh /ping.sh 172.25.254.30

网络可达:172.25.254.30 is up

sh /ping.sh 192.168.0.30

网络不可达:192.168.0.30 is down

test

test
[]
等同

test "$A" == "$B"
等同于
[ "$A" == "$B" ]

[ "$A" = "$B" ]

A等于B

[ "$A" -eq "$B" ]

A等于B

[ "$A" != "$B" ]

A不等于B

[ "$A" -ne "$B" ]

A不等于B

[ "$A" -ge "$B" ]

A大于等于B

[ "$A" -gt "$B" ]

A大于B

[ "$A" -le "$B" ]

A小于等于B

[ "$A" -lt "$B" ]

A小于B

[ -z "$A" ]

字符串的长度为空

[ -n "$A" ]

字符串的长度非空

test File1 –ef File2

两个文件是否为同一个文件,可用于硬连接,主要判断两个文件是否指向同一个inod

test File1 –nt File2

判断文件1是否比文件2新

test File1 –ot File2

判断文件1比是否文件2旧

Tr

转换大小写

实验

查看 / cpu% 使用率

超过 30% 报警

报警信息导入到日志

df | head -n 2 | tsil -n 1

vim logger.sh

sh logger.sh

cat /var/log/messages | tail -n 1

每分钟监视一次 / cpu% 使用率

vim logger.sh

cat logger.sh

sh logger.sh

执行 job 任务

cat /var/log/messages | tail -n 1

实验

vim /root/check_file.sh

[ -z “$1” ] && {
echo “Please input your filename”
exit
}
[ -e “$1” ] || {
echo “$1 is not exist”
exit
}
[ -f “$1” ] && {
echo “$1 is file”
exit
}
[ -d “$1” ] && {
echo “$1 is directory”
exit
}
[ -L"$1" ] && {
echo “$1 is softlinks”
exit
}
[ -S “$1” ] && {
echo “$1 is socket”
exit
}
[ -b “$1” ] && {
echo “$1 is block dev”
exit
}
[-c “$1” ] && {
echo “$1 is character dev”
exit
}

cat /root/check_file.sh

测试


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: