diff
用来比较两个文件或目录的不同
diff [options] [target1] [target2]
/mnt新建文件file1 file2比较不同:
[root@desktop110 mnt]# diff file1 file2
1,2c1 ###表示第一个文件file1的第1行和第2行change下边的两行内容就和file2文件相同
< Hello World
< 123
---
> hello world
a 添加
c 改变
d 删除
diff 中常用的参数
-b 或 --ignore-space-change 不检查空格字符的不同
-B 或 --ignore-blank-lines 不检查空白行
-c 显示全部内文,并标出不同之处
-i 或 --ignore-case 不检查大小写的不同
-p :若比较的文件为 C 语言的程序码文件时,显示差异所在的
函数名称;
-q 或 --brief :仅显示有无差异,不显示详细的信息
-r 或 --recursive :比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
打补丁
yum install patch -y ##下载patch命令
用于文件不同文件打布丁
patch [options] file.old file.path
-b
cut命令多用与字符截取
cut -d
指定分隔符
cut -f 1,7|1-7 指定截取的列
cut -c 1,4|1-4 指定截取的字符位置
cut -b 1,4|1-4 指定截取的字节位置
复制/etc/passwd 到/mnt下
head -n 5 passwd | cut -d : -f 1 ##查看passwd前5行内容,并截取分割符:的第一列内容
head -n 5 passwd | cut -d : -f 1,7 ##查看passwd前5行内容,并截取分割符:的第一列第7列内容
head -n 5 passwd | cut -d : -f 1-3 ##查看passwd前5行内容,并截取分割符:的第一列到第3列内容
实验:编写脚本ip_show.sh输入bond0查看其ip
#!/bin/bash
ifconfig $1 | head -n 2 | tail -n 1 | cut -d " " -f 10
https://img-blog.csdn.net/20180306192115015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGl4bHhs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast” alt=”这里写图片描述” title=”” />
编写脚本host_show.sh查看当前系统所有可以登陆的shell的用户
#!/bin/bash
grep bin/bash /etc/passwd | cut -d : -f 1
sort主要用于排序
sort -n 纯数字排列正序号
sort -nr 倒序(纯数字)
sort -r 倒序排列按每个数字的第一个字符
sort -u 去掉重复数字
sort -o 输出到指定文件
sort -t 指定分隔符
sort -k 指定要排序的列
-----------------
对重复字符的处理
uniq -u 显示唯一的行不重复
uniq -d 显示重复的行
uniq -c 每行显示一次并统计重复次数
对于file1
按正序从小到大排列
sort -n file1 ##file1从小到大正序排列(纯数字)
sort -r file1 ##按反序从大到小排列
显然9不是最大的,但却排在了第一位,这时因为参数-r是按数字第一位大小排列的
sort -rn file1 倒序从大到小纯数字排序
sort -u file1 去掉重复字排序
sort -un file1 去掉重复字按正序排列
sort -ur file1 去掉重复字按第一个数字倒序排列
sort -urn file1 去掉重复字按纯数字正序排列
sort -o 新文件名 输出指定文件 常和其他参数配合使用
sort -t 分隔符 -k num 指定分隔符,按第num列排序
eg:
sort -n file1 -t " " -k 1 对于文件file1按分割符空格前第一列正序排序
对重复字符的处理(常配合sort使用)
uniq -u 显示唯一的行不重复(重复的数字行与行之间未挨着算不重行)
uniq -d 显示重复的行(重复的n行紧挨着)
uniq -c 每行显示一次并统计重复次数
sort -n file2 | uniq -u file2正序排列后显示唯一的不重行
&& 和 ||
&& 用来执行条件成立后执行的命令
|| 用来执行条件不成立后执行的命令
例如:
ping -c1 -w1 172.25.254.111 && echo up
ping -c1 -w1 172.25.254.111 || echo up
实验:编写脚本ping.sh 执行脚本平通某个id输出该ip is net up,否则该ip is net down
#!/bin/bash
ping -c1 -w1 $1 &>/dev/null && echo $1 is net up || echo $1 is net down
test命令
test 命令和[]等同
test"$A" == "$B" 等同于 [ "$A" == "$B" ]
[ "$A" = "$B" ] A等于B
[ "$A" !="$B" ] A不等于B
[ "$A" -ne "$B" ] -ne等于
[ "$A" -eq "$B" ] -eq等于
[ "$A" -le "$B" ] -le小于等于
[ "$A" -lt "$B" ] -lt小于
[ "$A" -ge "$B" ] -ge大于等于
[ "$A" -gt "$B" ] -gt大于
[ "$A" -ge "$B" -a "$A" -le "$C" ] -a且 A大于等于B且A小于等于C
[ "$A" -ge "$B" -o "$A" -le "$C" ] -o或 A大于等于B或A小于等于C
---------------
[ -z "$A" ] A为空
[ -n "$A" ] A不为空
---------------
[ "file1" -ef "file2" ]第一个档案与第二个档案为同一个档案( link 之类的档案)
[ "file1" -ot "file2" ]第一个档案比第二个档案旧
[ "file1" -nt "file2" ]第一个档案比第二个档案新
-------------
[ -e "file" ] file文件存在否
[ -f "file" ] file为普通文件
[ -L "file" ] file为连接
[ -S "file" ] file套接字
[ -b "file" ] file块设备
[ -d "file" ] file目录
[ -c "file" ] file字符设备
----------------
实验1:-a 和 -o
[ "$A" -ge "$B" -a "$A" -le "$C" ] -a且 A大于等于B且A小于等于C
[ "$A" -ge "$B" -o "$A" -le "$C" ] -o或 A大于等于B或A小于等于C
输入三个数A=6,B=4,C=7若A大于等于B且A小于等于C显示yes,否则显示no
输入三个数A=4,B=6,C=7若A大于等于B且A小于等于C显示yes,否则显示no
输入三个数A=4,B=6,C=7若A大于等于B或A小于等于C显示yes,否则显示no
实验2:判断A是否为空
[ -z "$A" ] 空字符
[ -n "$A" ] 非空字符
实验3:判断文件的新旧
[ "file1" -ot "file2" ]第一个档案比第二个档案旧
[ "file1" -nt "file2" ]第一个档案比第二个档案新
实验3:判断文件是否为同一类型
[ "file1" -ef "file2" ]第一个档案与第二个档案为同一个档案( link 之类的档案)
实验4:新建脚本check_filestyle.sh判断文件的属性
[ -e "file" ] file文件存在否
[ -f "file" ] file为普通文件
[ -L "file" ] file为连接
[ -S "file" ] file套接字
[ -b "file" ] file块设备
[ -d "file" ] file目录
[ -c "file" ] file字符设备
实验7:新建cpu_use.sh当/目录使用率大于80%时发邮件给root用户,
#!/bin/bash
USER=`df / | tail -n 1 | cut -d " " -f 14 | cut -d % -f 1`
[ "$USER" -gt "80" ] && echo "CPU USED RATE TOO MUCH" | mail -s warning root || echo &>/dev/null
实验6:新建脚本clean_logs.sh root用户可以执行该脚本清空日志,显示清理成功显示内容字体为红色;普通用户则不能清理日志,显示内容为绿色
#!/bin/bash
[ "$USER" = "root" ] &&
(
>/var/log/messages
echo -e "\033[31;1mRoot clean logs!!\033[0m"
)||(
echo -e "\033[32;1mYou are not root,Don't clean logs!!\033[0m"
)
附加图
3m斜体2m枣红色