3.1 Shell中常用的基础命令


业务环境中Shell常用于对数据进行采集,或对系统健康进行监控,由于其效率过低而不用于开发软件等目的.

diff比较命令

diff命令用于比较文件或目录之间的不同.

##命令用法
diff [options] files | directorys

##输出结构
[num1,num2] [a/c/d] [num3,num4]

num1,num2	第一个文件中的行
a			增加
c			修改
d			删除
<			第一个文件中的内容
>			第二个文件中的内容
num3,num4	第二个文件中的行

##常用参数[options]
-b 忽略空格

-B 忽略空行

-i 忽略大小写

-c 显示文件所有内容并标示不同

-r 对比目录

-u 合并输出

对于-B参数,如果文件中空行前的内容存在不同,会导致比较时空行无法准确对应,因此也无法忽略空行,所以-B参数要保证空行前的内容是一致的.
diff基础
diff -b
忽略大小写
全文输出比较
合并输出
对比目录

Patch

patch常用于使用补丁文件对原文件内容修改,通过添加-b参数还能在打补丁时对原文件进行备份.

##命令结构
patch 原文件 补丁文件

##常用参数
-b	备份元文件

patch在系统中默认是没有的,需要自行安装.

dnf install patch.x86_64 -y

补丁修改
补丁备份

Cut

cut命令可以对文件内容分割,分割时可以指定分割符按列分割或直接指定截取的字符数.

##常用参数
-d :	##指定:为分割符
-f		##指定现实的列
		##-f 5 显示第五列
		##-f 3,5 显示第三列和第五列
		##-f 3-5 显示第三列到第五列
		##-f -5 显示第五列以前(包括第五列)
-c		##-f 5- 显示第五列以后(包括第五列)
##cut命令演示

##截取Test文件中每行的1-10个字符
cut -c 1-10 Test 
##:TestFil
##:TestFil
##:TestFil
##:TestFil

cut实验对象
cut截取演示

Sort排序命令

sort命令可以对文件内容进行排序,通过指定参数可以选择排序方法/去除重复/排序结果输出等等效果.

##常用参数
-n		##纯数字排序
-r		##倒叙排序
-u		##去除重复
-o		##输出到指定文件
-t		##指定分割符
-k		##指定排序的列
##sort排序命令演示
##查看Test文件原始内容
cat Test 
5
4
11
15
7
2
8
1

##默认排序输出,可以看到只以每一行第一位为标准排序
sort Test 
1
11
15
2
4
5
7
8

##将内容视作纯数字进行排序
sort -n Test 
1
2
4
5
7
8
11
15

##纯数字倒叙排序
sort -nr Test 
15
11
8
7
5
4
2
1

对Test文件进行编辑,使之有内容相同的行后进行如下操作.

##排序可看到内容相同的行
sort -n Test 
1
2
4
4
5
5
7
8
11
11
15
15

##纯数字排序,同时去除重复的行
sort -nu Test 
1
2
4
5
7
8
11
15

##纯数字排序,同时将结果输出到TestFile文件
##世纪效果与sort -n Test > TestFile相同
sort -n Test -o TestFile

[root@Node1 Desktop]# ls
Test  TestFile
[root@Node1 Desktop]# cat TestFile 
1
2
4
4
5
5
7
8
11
11
15
15

编辑Test文件,使之不止具有一列.

默认情况下都是按第一列进行排序,但也可以用参数指定分割符以及排序的列.

##查看编辑过的文件内容
cat Test
1:5
5:4
4:11
11:15
12:7
5:2
4:8
7:1
8:11

##默认排序为按照第一列进行排序
sort -n Test
1:5
4:11
4:8
5:2
5:4
7:1
8:11
11:15
12:7
##指定分割符为:,采用第二列进行排序
sort -n -t : -k 2 Test
7:1
5:2
5:4
1:5
12:7
4:8
4:11
8:11
11:15

同时,排序命令也可以与uniq命令结合,对重复项和唯一项进行分离.

##纯数字排序浏览文件内容
sort -n Test
1
2
2
4
5
5
8
11
11

##对Test进行排序,合并重复并统计重复个数后输出
##能看到2/5/11分别出现了2次
sort -n Test | uniq -c
1 1
2 2
1 4
2 5
1 8
2 11
##只显示重复的行
sort -n Test | uniq -d
2
5
11
##只显示唯一的行
sort -n Test | uniq -u
1
4
8

ifconfig ens3查看ens3网卡设备的信息,通过上述命令使得只输出ens3设备的IP地址.

ifconfig ens3 | head -n 2 | tail -n 1 | cut -d ' ' -f 10
172.25.254.136

TR字符替换命令

tr没有显示文件的能力,只有替换字符的能力.

即使对文件中内容作出了替换也不会在终端中提示或告知.

顾若需要查看文件内容需要与其他命令组合使用.

tr 'a-z' 'A-Z'		##将所有小写字母替换为大写字母
tr 'a' 'b'			##将文件中所有小写a替换为小写b

cat /root/Desktop/TestFile | tr 'a-z' 'A-Z'
将root用户桌面上的TestFile文件中内容全部改为大写并查看

tr命令对于字符串的支持很差,通常只用来替换单个字符.

&& ||

&&||都是条件分支选择符.

&&		条件成立时做后续动作

||		条件不成立时做后续动作
##额外内容,与本章内容无关
##普通输出项
echo $1 is exist.
##有色彩表示的输出项
echo -e "\033[31m$1 is exist\033[0m"

Test比较命令

Test命令可以对对象进行比较,如两个变量是否相等.

test命令与[ ]的含义相同.

##表意作用相同,均为比较变量a与b是否相同
test "$a" = "$b"
[ "$a" = "$b" ]

Test的数字对比

=		##等于
!=		##不等于

-eq		##等于
-ne		##不等于
-lt		##小于
-gt		##大于
-le		##小于等于
-ge		##大于等于

当需要符合条件时可以选择逻辑或者逻辑.

如0-10之间需要同时满足大于0的条件和小于10的条件,不在0-10之间需要满足小于0或者大约10的条件.

-a		##与逻辑,并且
-o		##或逻辑,或者

##举例 判断是否满足C大于0小于10
["$c" -gt "0" -a "$c" -lt "10"]

同时,test命令还能判断是否为空

-n		##nozero 判定内容不为空

-z		##zero 判定内容为空

##举例
##判断是否传参,当$*为空时说明没有传参
[ -z "$*" ] && {
        echo 未指定检测文件,请指定
        exit
}

Test命令关于文件的判定

##常用参数
-ef		##文件节点号是否一致(硬链接)
-nt		##文件1是否比文件2新
-ot		##文件2四否比文件1新
-d		##目录
-S		##套接字
-L		##软链接
-e		##存在
-f		##普通文件
-b		##快设备
-c		##字符设备
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值