shell
脚本
diff
用法
diff [options] files |directorys
输出信息:
[num1,num2][a|c|d][num3,num4]
num1,num2 ##第一个文件中的行
a ##添加
c ##更改
d ##删除
< ##第一个文件中的内容
##第二文件中的内容
num3,num4 ##第二个文件中的行
常用参数:
-b ##忽略空格
-B ##忽略空行
-i ##忽略大小写
-c ##显示文件所有内容并标示不同
-r ##对比目录
-u ##合并输出
2.path
patch 原文件 补丁文件
-b ### 备份原文件
diff -u westos westos1 > westos.path ##对比westos 和westos1的不同生成 补丁文件westos.path
patch westos westos.path ##打补丁
diff westos westos1 ##此时文件westos,和文件westos1没有区别
注:生成的备份文件会以**.org** 的后缀保存成文件
3.cut
cut
-d : ##指定 : 为分割符
-f ##指定显示的行
5 第五行
3,5 3和5行
3-5 3到5行
5- 第5行以后
-5 到第五行
-c ##指定截取字符(数字用法同-f)
4.sort
-n ##纯数字排序
-r ##倒叙
-u ##去掉重复
-o ##输出到指定文件
-t ##指定分隔符
-k ##指定排序的列
5.uniq
-d ##显示重复的行
-c ##合并重复并统计个数
-u ##显示唯一的行
5.&& ||
&& ##表示符合条件的动作
|| ##不符合条件的动作
实验演示:
text
text=[] ##[]就相当于text命令
“text $a = b ” = [ " b ” = [" b”=["a"="$b"]
text的数字对比
=
!=
-eq ##等于
-ne ##不等于
-le ##小于等于
-lt ##小于
-ge ##大于等于
-gt ##大于
text的条件关系
-a ##并且
-o ##或者
text 对空的判定
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空
执行下列脚本来判断用户类型
user_check.sh 用户
用户类型为
super user
system user
common user
text对于文件的判定
-et ##文件节点
-nt ##文件1是不是比文件2新
-ot ##文件1是不是比文件2老
-d ##目录
-S ##套接字
-L ##软连接
-e ##存在
-f ## 普通文件
-b ##块设备
-c ##字符设备
3.awk
awk -F 分割副 BEGIN {}{}END{} FILENAME
NR ##行数
NF ##列数
FILENAME ##文件名称本身
westos ##westos变量值
“westos” ## westos字符串
/bash$/ ##条件
条件1|条件2/ ##条件1或者条件2
/条件1/||/条件2/ ###条件1或者条件2
/条件1/&&/条件2/ ##条件1并且条件2
$0 #所有的列
$1 #第一列
$2
$3
awk -F : ‘BEGIN{print “userlist:”}{print $1}END{print “end”}’ passwd
userlist:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
end
##开头为userlist: 结尾为end
awk -F : ‘/bash$/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' passwd 显示 以ba…/&&/^root/{print $1}’ passwd
显示 以bash结尾并且以root 开头的 第一列
awk -F : ‘/bash$/||/^root/{print $1}’ passwd
显示 以bash结尾或者以root开头的 第一列
awk -F : ‘/bash$/||/^root/{print $1""$2}’ passwd
显示 以bash结尾或者以root开头的 第一列和第二列
awk -F : ‘{print NR }’ passwd
显示行数
awk -F : ‘{print NF }’ passwd
显示列数
awk -F : ‘{print FILENAME }’ passwd
显示文件本身的名称
awk -F : ‘$7~//bin/bash/{print $1}’ passwd
显示第七列以/bin/bash结尾的第一行
awk -F : ‘$7!~//bin/bash/{print $1}’ passwd
显示第七列不是以/bin/bash结尾的第一行
awk -F : ‘/root/ {print $0}’ passwd
显示含有root 的所有行
awk -F : ‘BEGIN{n=0}/bash ∣ s h |sh ∣sh/&&$6!~/^\home/{N++}END{print N}’ /etc/passwd
ifconfig ens3 | awk ‘/inet>/{print $2}’