前言
一、shell命令以及示例
一、diff命令
用于比较两个文件内容中的不同点也可以,将目录中的相同文件名进行比较,但是不会比较其子目录下的文件
参数 | 作用 |
---|---|
-a | 逐行比较文件内容 |
-B | 忽略空行 |
-b | 忽略空格 |
-c | 显示文件内容同时将不同点列出 |
-r | 对比目录 |
-u | 合并输出 |
-y | 并列显示输出结果 |
-w | 忽略全部空格字符 |
-I <指定字符串> | 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异 |
-H | 比较大文件时可以加快速度 |
-i | 不检测大小写 |
-W | 指定宽度-y参数存在时用来进行制定列表的宽度 |
输出结果中,a表示添加,c表示更改,d表示删除
-表示2中比1中少了这个内容+表示多了这个内容
<表示这个这个内容1中有2中没有
二、path命令
主要用来进行打补丁使用的
参数 | 解释 |
---|---|
-b | 备份源文件 |
-p | 表示跳过几层目录给文件打补丁 |
生成补丁文件时必须用新文件比较老文件才能进行正常的补丁步骤
diff -t -u 2 1 > 1.patch
patch -b -p0 1 1.patch
一个补丁文件只能进行一次补丁除非内容更换
三、sort命令
纯数字排序,使得数字进行排序
参数 | 作用 |
---|---|
-n | 纯数字排序正序 |
-u | 去处重复 |
-r | 倒叙排序 |
-k | 制定排序的列 |
-t | 制定分割副 |
-o | 输出到文件 |
sort -t : -n -k 3 passwd -o westos
四、uniq命令
参数 | 作用 |
---|---|
-c | 将重复的数据合并 |
-u | 现实重复的行 |
-d | 显示唯一的行 |
五、tr命令解释
cat passwd | tr 'a-z' 'A-Z' | sort -r -k 3 -t : -o westos
六、test命令
test主要作用为条件见判断使用进行对文件的条件判断段以及对数字的条件判断时使用的
参数 | 作用 |
---|---|
-a | 并且,对于条件的判定and |
-o | 或者,对于条件的判定or |
-eq | 等于,对于数字的条件判定 |
-nq | 不等于,对于数字之间的条件判定 |
-lt | 小于等于,对于数字的条件判定 |
-le | 小于,对于数字的条件判定 |
-gt | 小于等于,对于数字的条件判定 |
-ge | 大于,对于与数字的条件判定 |
-z | 判定内容为空,对空的判定 |
-n | 判定内容不为空,对空的判定 |
-ef | 判定文件节点号是否一致,即是否为硬连接 |
-nt | 判定文件的生成时间,即文件1比文件2要新 |
-ot | 判定文件的生成时间,即文件1比文件2要老 |
-d | 判定是否为目录 |
-S | 判定是否为套接子 |
-L | 判定是否为软连接 |
-f | 判断是否为普通设备文件 |
-b | 判断是否为快设备 |
-c | 判断是否为字符设备 |
||表示不符合条件的结果&&表示符合条件的结果
二、脚本练习
一、命令测试
- ip addr show 网卡 可以显示此网卡的信息
显示信息中包含此网卡使用的ip地址
请用命令过滤此ip并在输出时只显示ip其他信息不显示
ip addr show eth0 | grep "inet\>" | cut -d " " -f 6
- 找出能登陆系统用户中UID最大的用户,并显示其名称
sort -n -t : -k 3 passwd | cut -d : -f 1,3,6-7 | grep "bash$"
二、编写脚本完成以下条件
- file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中
#!/bin/bash
[ -z "$1" ] || {
[ -S $1 ] && {
echo "是一个套接子"
exit
}||
[ -L $1 ] && {
echo "是一个软连接"
exit
}||
[ -d $1 ] && {
echo "是一个目录"
exit
}||
[ -f $1 ] && {
echo "是一个文件"
exit
}
exit
}&&{
echo "请输入正确参数"
exit
}
- 执行下列脚本来判断用户类型
user_check.sh 用户
用户类型为
super user
system user
common user
#!/bin/bash
USR=$( id -u $1)
[ $USR -eq 0 ] && {
echo "super user"
exit
}||
[ $USR -gt 0 -a $USR -lt 1000 ] && {
echo "system user"
exit
}||
[ $USR -gt 1000 ] && {
echo "common user"
exit
}||{
echo "请输入系统存在的用户"
exit
}