【shell脚本1】shell的基本管理命令

一、diff 文件比较

1、基本用法:

diff [options] files/directorys
输出信息:
[num1,num2][a|c|d][num3,num4]

num1,num2第一个文件中的行
a添加
c更改
d删除
<第一个文件中的内容
>第二个文件中的内容

举例1:
ck1内容
在这里插入图片描述

ck2内容
在这里插入图片描述
比较显示
在这里插入图片描述

据例2:
ck1内容
在这里插入图片描述

ck2
在这里插入图片描述
注意:<后代表第一个文件的内容,>后代表第二个文件的内容
在这里插入图片描述

2、高级用法参数

常用参数:

-b忽略空格
-B忽略空行
-i忽略大小写
-c显示文件所有内容并标示不同
-r对比目录
-u合并输出

举例1:
ck1
在这里插入图片描述
ck2
在这里插入图片描述
忽略大小写测试:
在这里插入图片描述
举例2:
在这里插入图片描述
在这里插入图片描述

二、patch

1、安装包

dnf install patch -y

2、基本使用方法

patch原文件 补丁文件
patch -b原文件 补丁文件 #获得备份原文件

在这里插入图片描述

三、cut

1、基本使用

cut解释
-d :指定:为分隔符
-f指定显示的列 5第五列。 3,5 3和5列。3-5 3到5列。5- 第五列以后。-5 到第五列
-c指定截取的字符(数字用法同-f)

举例
将/etc/passwd文件的前10行导入到文本hhh里面,内容如下
在这里插入图片描述

以冒号为分割符号,显示前面的第1列
在这里插入图片描述
以冒号为分割符号,显示第1,第3,第5列
在这里插入图片描述
以冒号为分割符号,显示第1到第5列
在这里插入图片描述

显示1到4个字符
在这里插入图片描述

2、例题:

1、ifconfig 网卡 可以显示此网卡的信息
2、显示信息中包含此网卡使用的ip地址
3、请用命令过滤此ip并在输出时只显示ip其他信息不显示
在这里插入图片描述

ifconfig enpls0 |head -n 2|tail -n 1|awk '{print $2}' ##awk '{print $2}'以空格为分割符输出第2列的数据

4、sort

1、基本使用方法

sort解释说明
-n纯数字排序
-r倒叙
-u去掉重复
-o输出到指定文件
-t指定分隔符
-k指定排序的列

新建一个文件,里面每行写数字
在这里插入图片描述
此时直接使用sort对文件进行排序,得到的是以首个字符为排序准则的排序结果,这是不对的。
在这里插入图片描述
需要使用-n参数对文件进行纯数字排序
在这里插入图片描述

2、例题

找出能登陆系统用户中UID最大的用户,并显示其名称
在这里插入图片描述

cat /etc/passwd|grep bash |sort -t : -k 3 -rn|tail -n 1|cut -d : -f 1 ##对纯数字排序时要加-n或者-rn。

在这里插入图片描述

5.uniq

1、基本说明

uniq解释
-c合并重复并统计重复个数
-d显示重复的行
-u显示唯一的行

采用上一个实验文件,进行测试
在这里插入图片描述
分别合并重复并统计重复个数,显示重复的行,显示唯一的行
在这里插入图片描述

2、例题

统计下列此数值出现最多的,并输出次数
在这里插入图片描述
在这里插入图片描述

6、tr

1、基本用法

tr解释
tr “a-z“ ”A-Z“小写转大写
tr “A-Z’“ ”a-z”大写转小写

2、例题

将下列内容的全部换为大写
在这里插入图片描述
在这里插入图片描述

7、test

1、 test数字对比

test = [ ][ ]和test的意思一样
!=表示否定
-eq等于
-ne不等于
-le小于等于
-lt小于
-ge大于等于
-gt大于

举例
注意在判断时变量前要加$符并用“”引起来(如果是数字只需要用“”引起来)

test "$a" = "$b" 和[ "$a"= "$b" ] 是相同的含义
[root@service ~] a=1
[root@service ~] b=2
[root@service ~]# test "$a" = "$b" && echo yes || echo no 
no
[root@service ~]# [ "$a" = "$b" ] && echo yes || echo no 
no
[root@service ~]# [ "$a" != "$b" ] && echo yes || echo no 
yes
[root@service ~]# [  "$a" -ne "$b" ] && echo yes || echo no 
yes
[root@service ~]# [  "$a" -le "$b" ] && echo yes || echo no 
yes
[root@service ~]# [  "$a" -ge "$b" ] && echo yes || echo no 
no
[root@service ~]# [  "$a" -gt "$b" ] && echo yes || echo no 
no

记得取消a和b的数值

 unset a
 unset b

2、test对空的判定

-nnozero 判定内容不为空
-zzero 判定内容为空

3、test的条件关系

-a并且
-o或者

举例
1、判定a的值为空时输出yes

[root@service ~]# unset a            取消a的赋值
[root@service ~]# test -z $a && echo yes || echo no
yes

在这里插入图片描述
2、当a的值为为空,且b的值等于1时输出yes
在这里插入图片描述

4、test对于文件的判定

ef文件节点号是否一致(硬链)
-nt文件1是不是比文件2新
-ot文件1是不是比文件2老
-d目录
-S套结字
-L软连接
-e存在
-f普通文件
-b快设备
-c字符设备
[root@service ~] [ fileold -ef filenew ] && echo yes || echo no 
no
[root@service ~] [ fileold -ot filenew ] && echo yes || echo no 
yes
[root@service ~] [ fileold -nt filenew ] && echo yes || echo no 
no
[root@service ~] [ -d filenew ] && echo yes || echo no 
no
[root@service ~] [ -S filenew ] && echo yes || echo no 
no
[root@service ~] [ -L filenew ] && echo yes || echo no 
no
[root@service ~] [ -e filenew ] && echo yes || echo no 
yes
[root@service ~] [ -f filenew ] && echo yes || echo no 
yes
[root@service ~] [ -b filenew ] && echo yes || echo no 
no

5、例题:

编写脚本,判断文件的类型。
1,如果后面没有文件名字输出“please input check file !!“
2,如果文件不存在输出“文件 is not exit !!"
3,其他情况则输出文件的类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意先后顺序,软连接也是目录,因此的先判定软连接。除此之外如果是文件的,那么判定总是在最后,效率较低,后面会选择case语句进行优化

8、&& ||

&&符合条件做动作
||不符合条件作动作

[root@service ~] id westos &> /etc/null && echo yes || echo no  系统会自动判断操作成功与否
yes

例题:

编写一个脚本,使ping的时候,能联通显示“IP is up",不能联通的时显示”IP is down"。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值