diff
diff在比较文件过程中结果读取方式:
[num1,num2][a|c|d][num3,num4]
num1,num2表示在第一个文件中的行数
a表示添加
c表示更改
d表示删除
<表示第一个文件中的内容,>表示第二个文件中的内容
---分割线
num3,num4表示在第二个文件中的行数
2,4c2,4表示改变第一行文件中的第二行和第四行才能匹配第二个文件中的第二行和第四行
-b或--ignore-space-change 不检查空格字符的不同
-B或--ignore-blank-lines 不检查空白行
-c 显示全部内文,并标出不同之处
-i 或--ignore-case 不检查大小写的不同
-p 若比较的文件为c语言的程序码文件时,显示差异所在的函数名称
-q 或--brief 仅显示有无差异,不显示详细的信息
-r或--recursive 比较子目录中的文件
-u 以合并的方式来显示文件内容的不同
fiff test test1 比较test与test1的不同
两个文件的第一行不同,test1第二行多了一行空格
删除test1与test2并新建test1与test2
test1文件中结尾多打一个空格,提示了不同
加入参数-b则会忽略空格,不提示
test只有两行文件,test1有3行文件,且第二行为空行
diff test test1 B 忽略空行
diff test test1 -c显示全部明文并标出不同之处
提示在第二行加入字符。
查看test与test1中的信息
diff test test1比较不同
diff test test1 -i忽略大小写比较test与test1不提示。
diff test test1 -q 只提示是否相同,不显示详细的信息。
mkdir dir 创建目录dir
mkdir dir1 创建目录dir1
touch dir/file在目录dir下创建文件file
diff dir dir1 -r 比较两个目录子文件的不同
可以看到提示只有目录dir中有文件file
从 以合并的方式来显示文件内容的不同
提示,删除第一行的Hello,然后加hello及与test1相同
diff test test1 -u > test.path 会生成补丁文件
yum install patch -y 下载该应用
patch -b test1 test.patch 使用补丁修改文件test1与test相同
diff test test1比较两个文件
cut命令
cat passwd
cut -d : -f 1 passwd 指定文件passwd切割符为:并截取第一列
cut -d : -f 1,3 passwd 文件passwd的分隔符为:并截取第一列和第三列
cut -d : -f 1-3 passwd 文件passwd的分隔符为:并截取第一列到第三列
截取文件passwd每一列的第一到第三个字符
截取文件passwd第一列第一个和第三个字符
sort命令
vim test 编辑文件test
cat test 查看test
按第一位数字大小排序
纯数字排序
sort -r 倒序排列
去除重复数字后排序
去除重复数字后倒序排列
sort -nru test -o westos去除重复数字倒序排列后将排序结果写入westos文件中。
编辑文件test
sort -t : -k 2 test对test文件,以:为分隔符并对第二行进行排序
uniq
uniq可以去除相邻行的重复行,所以我们往往先用sort对文件排序然后再用uniq统计数目大小,注意uniq去除的重复行是相邻的。
编辑test文件如下所示
uniq -c 每行显示一次并统计次数
左边的为数字出现的次数,右边的为数字
uniq -u 查看不重复的数字
uniq -d 查看重度的数字
&&与||
&&表示条件为真,||表示条件为假
编辑脚本如下所示
ping $1 -w 3 >/dev/null && echo “$1 is up” || echo “$1 is down” 表示ping输入的ip($1),若能ping通输出结果为“$1 is up",ping不通则输出结果“$1 is down”($1表示执行脚本输入的ip,>/dev/null表示不显示输出结果)
结果为真时
结果为假时
脚本中的比较
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
<(>) 小于(大于)
<=(>=) 小于等于(大于等于)
!=不相等
连接字符
-a 且
-o 或
-z 是否为空
-n 是否不为空
-ot 文件时间旧
-nt 文件时间新
-ef 互为硬链接
编辑脚本ping某个ip地址(该ip可以不加,但不加需要报错),若该ip可以ping通给出提示,否则报错。
#!/bin/bash
[ -z "$1" ] && {
echo "Error:please input ipaddress follwing test.sh"
exit
}
ping $1 -w 3 >/dev/null && {
echo "$1 is up"
} || {
echo "$1 is down"
}
执行效果如下所示
不加ip会报错,加入可以ping通的ip会提示该ip正在工作
ping不通ip时提示该ip不工作
编写脚本,当根目录的利用率超过80%时报错并且报错写入日志中,且每分钟查询一次。
#!/bin/bash
[ `df | cut -c 45-55 |tail -n 5 | head -n 1|cut -c 1-2` -ge 80 ] &&
echo "/space is no enough space" >> /var/log/messages ||
echo "/space is enough space" >>/var/log/messages
at now+1min <<-EOF
/root/text.sh
EOF
硬链接与软链接
硬链接
ls -i test.sh 查看test.sh的节点
ln /root/test.sh /root/c.sh 新建硬链接c.sh
ls -i c.sh 查看c.sh的节点,可以看到其节点与源文件的节点相同
软链接
ln -s /root/test.sh /root/cn 建立软链接cn
cat cn查看软链接
ls -i cn 查看软链接的节点,可以看到其节点与源文件不同
rm -fr /root/test.sh 刪除/root/test.sh(源文件)
查看软链接可以看到无法查看,因为其指向的文件已经被删除。
而硬链接建立的文件依旧可以查看。
软链接只建立一个节点,通过该节点来查找数据块中的内容,而硬链接则会复制其数据块,但节点不会发生改变,即使删除原来的文件,也不会对硬链接产生影响(硬链接,一个节点对应多个文件)。
cp text.sh test.sh 重新产生新的test.sh文件可以发现,软链接又可以查看了。
test
test
[-e “file“]文件是否存在
[-f “file“]是否为普通文件
[-L ‘file’] 是否为软链接
[-S “file“] 是否为套结字(socket)
[-b “file”] 是否为块设备
[-d “file”] 是否为目录
[-c “file”]是否为字符设备
用脚本编写查看文件/mnt/checkfile.sh的类型