1.diff 用法:
diff [options] files|directorys
输出信息:
[num1,num2] [a|c|d] [num3,num4]
num1,num2 ##第一个文件中的行
a ##添加
c ##更改
d ##删除
< ##第一个文件中的内容
> ##第二个文件中的内容
num3,num4 ##第二个文件中的行
常用参数&#xff1a;
-b ##忽略空格
-B ##忽略空行
-i ##忽略大小写
-c ##显示文件所有内容并标示不同的行
-r ##对比目录
-u ##合并输出
2.patch patch 原文件 布丁文件
-b ##备份原文件
实验&#xff1a;
cd /mnt
echo westos linux > westos
cat westos > westos1
echo 123 >> westos1
diff westos westos1
diff -b westos westos1
diff -B westos westos1
diff -i westos westos1
diff -c westos westos1
mkdir westosdir
mkdir westosdir1
touch westosdir1/westosfile
ls westosdir1
diff -r westosdir westosdir1/
diff -u westos westos1 > westos.path (生成补丁)
dnf install patch
patch westos westos.path
patch -b westos westos.path
3.cut
-d : | 指定&#xff1a;为分隔符 |
-f | 指定显示的列 |
-c | 指定截取的字符&#xff08;数字用法同-f&#xff09; |
cd /mntrm -rf *cp /etc/passwd .lscat passwdcut -d : -f 1 passwdcut -d : -f 1,7 passwd &#xff08;第一列和第七列&#xff09;cut -d : -f 1-3 passwd &#xff08;第一列到第三列&#xff09;cut -d : -f -3 passwd &#xff08;第三列之前&#xff09;cut -d : -f 3- passwd &#xff08;第三列之后&#xff09;cut -c 1-4 passwd &#xff08;第一个字符到第四个字符&#xff09;
4.sort
-n | 纯数字排序 | -r | 倒叙 |
-u | 去掉重复 | -o | 输出到指定文件 |
-t | 指定分隔符 | -k | 指定排序的列 |
vim westoscat westos
1
3
6
9
4
5
3
9
22
97
3sort westos (只排列第一列)sort -n westos (纯数字排列)sort -nr westos (纯数字倒叙排列)sort -nru westos &#xff08;纯数字去掉倒叙排列&#xff09;sort -nr westos -o testsort -n -t : -k 2 westos
5.uniq
-c | 合并重复并统计重复个数 |
-d | 显示重复的行 |
-u | 显示唯一的行 |
sort -n westos | uniq -c &#xff08;纯数字排列&#xff0c;并合并重复并统计重复个数&#xff09;sort -n westos | uniq -d &#xff08;纯数字排列&#xff0c;并显示重复的行&#xff09;sort -n westos | uniq -u &#xff08;纯数字排列&#xff0c;并显示独立的行&#xff09;
学员命令测试&#xff1a;
1.ifconfig 网卡 可以显示此网卡的信息
显示信息中包含此网卡使用的ip地址
请用命令过滤此ip并在输出时只显示ip其他信息不显示
ifconfig ens3 | head -n 2 | tail -n 1 | cut -d "空格" -f 10
2.找出能登陆系统用户中UID最大的用户&#xff0c;并显示其名称
grep bash /etc/passwd | sort -rn -t : -k 3 | cut -d : -f 1 | head -n1
6.tr tr &#39;a-z&#39; &#39;A-Z&#39; | 小写转大写 |
tr &#39;A-Z&#39; &#39;a-z&#39; | 大写转小写 |
tr &#39;A-Z&#39; &#39;a-z&#39; 将test中的内容大写转小写 | |
7.test test &#61; [] [] 就相当于test命令
test "$a" &#61; "$b" &#61; [ "$a" &#61; "$b" ]
test数字对比
&#61; | 等于 | &#xff01;&#61; | 不等于 |
-eq | 等于 | -ne | 不等于 |
-le | 小于等于 | -lt | 小于 |
-ge | 大于等于 | -gt | 大于 |
test的条件关系
-a 并且
-o 或者
test对空的判定
-n 判定内容不为空
-z 判定内容为空
实验
vim nmu_check.sh
#!/bin/bash
[ "$1" -ge "0" -a "$1" -lt "10" ] && {echo $1 is in 0-9
}|| {echo $1 is not in 0-9
}
sh nmu_check.sh 5
执行下列脚本来判断用户类型
user_check.sh 用户
&& ||
&& 符合条件作动作
|| 不符合条件作动作
test对于文件的判定
-ef | 文件节点号是否一致&#xff08;硬链&#xff09; | -L | 软连接 |
-nt | 文件1是不是比文件2新 | -e | 存在 |
-ot | 文件1是不是比文件2老 | -f | 普通文件 |
-d | 目录 | -b | 块设备 |
-S | 套接字 | -c | 字符设备 |
&#xff08;判断是否是目录&#xff09; [ -d "westosdir" ] && echo yes || echo nodnf install mariadb-server -y &> /dev/null
&#xff08;判断是否是套接字&#xff09;[ -S "/var/lib/mysql/mysql.sock" ] && echo yes || echo no&#xff08;判断是否是块设备&#xff09;[ -b "/dev/vda" ] && echo yes || echo nocd /mnttouch fileln -s /mnt/file /mnt/file1&#xff08;判断是否有软链接&#xff09;[ -L "/mnt/file1" ] && echo yes || echo no(判断是否是字符设备) [ -c "/dev/pts/0" ] && echo yes || echo no
实验&#xff1a;
1)ping -c1 -w1 172.25.254.100 &> /dev/null && echo 172.25.254.100 is up || echo 172.25.254.100 is down
2)脚本&#xff1a;
vim test.sh
#!/bin/bash
ping -c1 -w1 172.25.254.100 &> /dev/dull && {
echo 172.25.254.100 is up
} || {
echo 172.25.254.100 is down
}
sh test.sh
3&#xff09;检测hello用户在系统中是否存在&#xff0c;存在显示hello is exit,不存在显示hello is not exit
#!/bin/bash
id $1 &> /dev/null && {
echo $1 is exit
} || {
echo $1 is not exit
}
sh test.sh hello
学员检测
编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件&#xff0c;请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中
#!/bin/bash
[ -z "$1" ] && {echo "Error:no check file , please input file name!!"exit
}[ ! -e "$1" ] && {echo "$1 is not exit!"exit
}[ -L "$1" ] && {echo "$1 is link file"exit
}
[ -f "$1" ] && {echo "$1 is common file"exit
}
[ -d "$1" ] && {echo "$1 is directory"exit
}
[ -b "$1" ] && {echo "$1 is block device file"exit
}
[ -S "$1" ] && {echo "$1 is socket"exit
}