shell中的常用命令
1.diff命令
1)diff命令作用
diff命令是用来比较两个文件或目录的不同
diff [options] target1 target2
diff file1 file2
diff direcory1 directory2
2)diff在比较文件过程中结果读取方式
[num1 , num2][a|c|d][num3,num4]
num1,num2 | 表示在第一个文件中的行数 |
---|---|
a | 表示添加 ----add |
c | 表示更改 ----change |
d | 表示删除 ----delete |
< | 表示第一个文件中的内容 |
> | 表示第二个文件中的内容 |
— | 分割线 |
num3,num4 | 表示在第二个文件中的行数 |
测试:
[[email protected]_example mnt]# diff file1 file2
3c3,4 ##改变第一个文件中的第三行才能匹配第二个文件中的第三行和第四行
< 2 ##第一个文件中的第三行内容
---
> 02 ##第二个文件中的第三行和第四行内容
> 27
3)diff在比较目录过程中结果的读取
Only in directory/:filename
directory | 表示在哪个目录中 |
---|---|
filename | 表示不同的那个文件 |
测试:
[[email protected]_example mnt]# diff test1/ test2/
Only in test1/: hello ##不同的文件为test1目录下的hello文件
4)diff中常用的参数
-b 或 --ignore-space-change | 不检查空格字符的不同 |
---|---|
-B 或 --ignore-blank-lines | 不检查空白行 |
-c | 显示全部内文,并标出不同之处 |
-i 或 --ignore-case | 不检查大小写的不同 |
-p | 若比较的文件为 C 语言的程序码文件时,显示差异所在的 |
函数名称 | |
-q 或 --brief | 仅显示有无差异,不显示详细的信息 |
-r 或 --recursive | 比较子目录中的文件 |
-u | 以合并的方式来显示文件内容的不同 |
示例:
ddif -b file1 file2 ##不检查空格字符的不同
diff -B file1 file2 ##不检查空白行
diff -c file1 file2 ##显示全部内文,并标出不同之处
*** file1 2019-02-28 01:02:00.274991808 -0500 ##***表示的文件为file1
--- file2 2019-02-28 01:01:20.320991808 -0500 ##---表示的文件为file2
***************
*** 1,4 **** ##file1文件一共4行
hello world
welcome
! ds ##!所标示的行为与另一个文件不同的行
! hai
--- 1,3 ---- ##file2文件一共3行
hello world
welcome
! he
diff -i file1 file2 ##不检查大小写的不同
diff -q file1 fil2 仅显示有无差异,不显示详细的信息
diff -r test1/ test2/ 比较子目录中的文件
diff -u file1 file2 ##以合并的方式来显示文件内容的不同(常用来生成补丁)
2.pacth
用于两不同文件打补丁
1)服务下载
yum install pacth -y
2)命令格式
diff -u file1 file2 > file.path ##生成补丁
patch file.old file.path ##向老文件打补丁
patch -b file.old file.path ##保留原文件,执行后会出现一个后缀为.orig的文件,其内便是原文件内容
测试:
保留原文件:
3.cut命令
1)cut 命令作用
cut命令多用与字符截取
2)cut命令用法
cut -d | 指定分隔符 |
---|---|
cut -f 1,7/1-7 | 指定截取的列 (,为第几列和第几列 -为第几列到第几列,实际运用需要加上-d指定分隔符) |
cut -c 1,4/1-4 | 指定截取的字符位置 |
测试:
cut -d : -f 1,7 passwd
cut -d : -f 1-7 passwd
cut -c 1,4 passwd
cut -c 1-4 passwd
4.sort命令
1)sort命令作用
sort命令多用于字符排序
2)sort命令用法
sort -n | 纯数字排序 |
---|---|
sort -r 倒序 | |
sort -u | 去掉重复数字 |
sort -o | 输出到指定文件中 |
sort -t | 指定分隔符 |
sort -k | 指定要排序的列 |
sort -n test ##纯数字排序
sort -nr test ##纯数字倒叙排列
sort -u test ##去掉重复数字
sort -n test -o test1 输出到test1文件中
sort -t : -k 2 -n test ##对以:为分隔符的第二列纯数字排序
5.uniq命令
1)作用
对重复字符做相应的处理,常与sort -n 一同使用
2)用法
uniq -u | 显示唯一的行 |
---|---|
uniq -d | 显示重复的行 |
uniq -c | 每行显示一次并统计重复次数 |
sort -n test | uniq -c ##对test进行排序每行显示一次并统计重复次数
1 1 ##一个2
3 3 ##三个3
1 4
2 6 ##两个6
1 12
1 24
1 66
uniq -u ##显示唯一行
uniq -d ##显示重复行
6.test 命令
test 命令和 [ ] 等同
test "$A" == "$B" 等同 [ "$A" == "$B" ]
用法
[ "$A" = "$B" ] ##A等于B
[ "$A" != "$B" ] ##A不等于B
[ "$A" -eq "$B" ] ##A等于B
[ "$A" -ne "$B" ] ##A不等于B
[ "$A" -le "$B" ] ##A小于或或等于B
[ "$A" -lt "$B" ] ##A小于B
["$A" -ge "$B" ] ##A大于或等于B
["$A" -gt "$B" ] ##A大于B
["$A" -ne "$B" -a "$A" -gt "$B" ] ##A不等于B 且 A大于B
["$A" -ne "$B" -o "$A" -gt "$B" ] ##A不等于B 或者 A大于B
[ -z "$A" ] ##A是否存在
[ -n "$A" ] ##A是否不存在
["file1" -ef "file2" ] ##file1和file2创建时间是否相同
["file1" -nt "file2" ] ##file1是否比file2创建时间晚(是否比他新)
["file1" -ot "file2" ] ##file1是否比file2创建时间早(是否比他老)
[-e "file" ] ##文件是否存在
[-f "file" ] ##文件是否为纯文本
[-L "file" ] ##文件是否为链接
[-S "file" ] ##文件是否为套接字
[-b "file" ] ##文件是否为块设备(磁盘)
[-d "file" ] ##文件是否为目录
[-c "file" ] ##文件是否为字符设备
补充:
显示大小写的替换:
tr 'a-z' 'A-Z' < test