shell 中常用的基础命令

1. diff

  • 用法:
    diff [options] files | directorys
  • 输出信息:
    [num1,um2] [a|c|d] [num3,num4]
字符含义
num1,num2第一个文件中的行
a添加
c更改
d删除
<第一个文件中的内容
>第二个文件中的内容
num3,num4第二个文件中的行

输入命令 : diff file1 file 既可以看到他们之间的不同,表示删除第一个文件中第二行的 zxk 便可和第二个文件一样;
输入命令 : diff file file1 看到的信息,表示第一个文件添加第二个文件中的第二行 zxk 即可和第二个文件一致;

在这里插入图片描述
如下图中的 1c1 表示,第一个文件做添加即可和第二个文件内容一致;

在这里插入图片描述

常用参数:

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

如 file 和 file1相比,file1 比 file 多一空行,输入 diff -B file file1,便可以忽略空行对比信息;
如 file 和 file1相比,file1 比 file 多几个空格,输入命令 diff -b file file1,便可以忽略空格对比信息;

在这里插入图片描述

输入命令 diff -i file file1 即可忽略大小写来做对比;
输入命令 diff -c file file1 即可显示所有的信息,并在不想的行前面标出 ! ;

在这里插入图片描述
输入命令 diff zxk westos,不加 -r ,只能对比一层目录的内容是否一致;

在这里插入图片描述
如输入命令 diff -r zxk westos,即可将深层目录中的不同也对比出来;

在这里插入图片描述

输入命令 diff -u file file1 即可合并信息,并且可以将合并的信息输出成补丁文件。

在这里插入图片描述

2. patch

  • 用法: patch + 原文件 + 补丁文件

  • -b 备份原文件

系统中默认是没有安装 patch 软件的,需要手动安装,输入命令 dnf install path -y,来安装该软件。


生成补丁文件之后,即可对其打补丁;
输入命令 patch file westos.path 即可用补丁文件来为 file 文件补全信息;但是之前的文件会被替代;
输入命令 patch -b file westos.path,即可用补丁文件来为 file 文件补全信息;同时也会生成一个 .orig 的文件,此文件为 file 文件补丁之前生成的副本。

在这里插入图片描述

3. cut

cut

参数含义
-d :指定 : 为分割符
-f指定显示的列 ,5表示第五列;3,5 表示3和5列;3-5 表示 3到5列
-c指定截取的字符(数字用法同-f)

如输入命令 cut -d : -f 1 zxk ,表示用 : 来分割,显示第一列信息;
输入命令 cut -d / -f 1 zxk ,表示用 / 来分割,显示第一列信息;

在这里插入图片描述
输入命令 cut -d : -f 1,3 zxk ,表示用:分割,显示第1和第3列信息;
输入命令 cut -d : -f 1-3 zxk ,表示用:分割,显示第1至第3列信息;
输入命令 cut -d : -f 4- zxk ,表示用:分割,显示第4至最后的信息;
输入命令 cut -d : -f -5 zxk ,表示用:分割,显示第5列之前的信息;

在这里插入图片描述

输入命令 cut -c 1-5 zxk ,表示截取 1-5 个字符信息;
输入命令 cut -c -6 zxk ,表示截取第6个字符包括第6个字符之前的信息。

在这里插入图片描述

4. sort

参数含义
-n纯数字排序
-r倒叙
-u去掉重复
-o输出到指定文件
-t指定分割符
-k指定排序的列

输入命令 sort -n zxk ,对文件内容按照纯数字排序;

在这里插入图片描述

输入命令 sort zxk ,对文件内容进行排序,默认排序是按照第一个数字大小进行排序;

在这里插入图片描述

输入命令 sort -rn zxk ,按照纯数字倒叙对内容进行排序;

在这里插入图片描述
输入命令 sort -run zxk ,去掉重复按照纯数字倒叙对内容进行排序;

在这里插入图片描述

输入命令 sort -n -t : -k 2 zxk,用分割符:对内容进行分割,对第2列按照纯数字进行排序;

在这里插入图片描述

5. uniq

参数含义
-c合并重复并统计重复个数
-d显示重复的行
-u显示唯一的行

输入命令 sort -n zxk | uniq -c 按照纯数字对内容进行排序,合并重复并统计重复个数;

在这里插入图片描述
输入命令 sort -n zxk | uniq -d ,按照纯数字排序,并显示重复的行;
输入命令 sort -n zxk | uniq -u ,按照纯数字排序,并显示位一的行;

在这里插入图片描述

6. tr

命令含义
tr ‘a-z’ ‘A-Z’小写转大写
tr ‘A-Z’ ‘a-z’大写转小写

输入命令 cat westos | tr ‘a-z’ ‘A-Z’ 将小写转换为大写并显示内容;
输入命令 cat westos | tr ‘A-Z’ ‘a-z’ 将大写转换为小写并显示内容;
用 tr 对于字符的转换,只能是对于单个字符的转换,对于多个字符的转换会出现问题。

在这里插入图片描述

7. && ||

  • && ##符合条件动作
  • || ##不符合条件动作

当用命令来查看当前主机和其他主机之间是否通信时,对于不了解该机制的人来说,判断其是否通信比较麻烦,可以用命令来转化输出的结果,清晰可见。
如输入命令 ping -c1 -w1 192.168.122.1 > /dev/null && echo 192.168.122.1 is up || echo 192.168.122.1 is down,表示在网络通常时,显示 192.168.122.1 is up,当网络不通时,显示echo 192.168.122.1 is down;
还可以用简单脚本的书写,以及脚本的调用方式来输出结果。

在这里插入图片描述

8. test

 test = [ ]		##[ ]就相当于 test 命令
        
 test ”$a"  "$b" = [ "$a" = "$b" ]

test 数字对比

字符含义
取反
!=不等于
-eq等于
-ne不等于
-le小于等于
-lt小于
-ge大于等于
-gt大于

给 a 、b 、c 分别赋予不同的值来测试大于等于小于等信息的对比,操作如下图所示:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

test 的条件关系

参数含义
-a并且
-o或者

对于以上数字的测试,除了单个条件的对比之外,还可以加上条件来进行对比,操作如下图所示:

在这里插入图片描述

test对空的判定

参数含义
-nnozero 判定内容不为空
-zzero 判定内容为空

对于内容的判断,可以用以下的操作来判断内容是否为空。

在这里插入图片描述

test 对于文件的判定

参数含义
-ef文件节点号是否一致(硬链)
-nt文件1是不是比文件2新
-ot文件1是不是比文件2老
-d目录
-S套结字
-L软链接
-e存在
-f普通文件
-b块设备
-c字符设备

对于文件节点号以及文件建立时间的判断如图所示:

在这里插入图片描述
对于文件类型的判断如下:

在这里插入图片描述
在这里插入图片描述

脚本测试 :

  1. ifconfig 网卡,可以显示此网卡的信息; 显示信息中包含此网卡使用的 ip 地址;请用命令过滤此 ip 并在输出时只显示 ip 其他信息不显示。

用以下两种方式:
输入命令 ifconfig enp1s0 | grep “inet” | cut -d " " -f 10,从网卡信息中过滤出 inter 信息,用空格做为分割符,显示第10列信息;
输入命令 ifconfig enp1s0 | cut -d " " -f 10 | head -n2 |tail -n1,从网卡信息中用空格做为分割符,显示第10列信息中的前第二行信息。

在这里插入图片描述

  1. 找出能登陆系统用户中 UID 最大的用户,并显示其名称。

用以下两种方式:
输入命令 sort -t : -k 3 -n /etc/passwd| grep -E "bash $ |sh$ " |cut -d : -f 1| tail -n1,在 /etc/passwd 文件中,用:作为分割符,对第3列按照纯数字排序,并过滤出以 bash 和 sh 结尾的行,以:为分割符,截取第一列,并显示最后一行;
输入命令 grep -E "bash$ |sh$ " /etc/passwd | sort -t : -k 3 |tail -n 1 |cut -d : -f 1,在 /etc/passwd 文件中,过滤出以 bash 和 sh 结尾的行,用:作为分割符,对第3列按照纯数字排序,并显示最后一行,以:为分割符,截取第一列。

在这里插入图片描述

  1. 检测系统中用户是否存在,当存在时提示:用户存在;当不存在时,提示用户不存在;
    当脚本后内容为空时,报错: Error : Please input username following script ,并且报错的颜色为红色。

编写脚本内容如图所示,当脚本后内容为空时,报错: Error : Please input username following script ,并且报错的颜色为红色;当脚本内容不为空时,对用户进行判断,当用户存在时输出用户存在;当不存在时输出用户不存在。

在这里插入图片描述
对编写的脚本进行测试结果如图所示:

在这里插入图片描述

  1. 在 /mnt/ 中写一个脚本,用来创建和删除用户;
    当脚本后跟字符串不足两个时报错: Usage:/mnt/westos.sh < create | delete > < username > ;
    在新建用户时:当用户存在,提示:用户存在;当用户不存在时,新建用户,并提示: 用户已经建立;
    在删除用户时:当用户存在,执行删除动作,并提示用户已经删除;当用户不存在时,什么都不做,直接退出。
    当脚本后跟内容不是新建或者删除时,报错:error:wrong option ,please input create or delete following script.

编写脚本内容如图所示,先判断脚本后跟字符串是不是小于2个,当小于两个时报错;当不小于两个时执行下面的命令,当第一个字符不为 create 或者 delete 时,报错提示输入正确的命令;当为 create 时,判断第二个字符用户是否存在,当存在时输出用户存在,当不存在时建立该用户并输出用户已经建立;当不是 create 时,判断第二个字符用户是否存在,当存在时执行删除动作,并显示用户已经被删除;当不存在时直接退出。

在这里插入图片描述
对编写的脚本进行测试结果如图所示:

在这里插入图片描述

  1. 编写脚本 file_check.sh 在执行时,如果脚本后未指定检测文件报错“未指定检测文件,请指定”;如果脚本后指定文件不存在时报错“此文件不存在”;当文件存在时请检测文件类型并显示到输出中。

编写脚本内容如图所示:先判断脚本后内容是否为ie空,当为空时报错;当不为空时再判断是否存在,当不存在时输出文件不存在;当存在时再依次进行判断即可。

:此处要将链接放在前面,因为链接和文件是同类型,当检测为文件时便会退出,而不检测是否为链接。

在这里插入图片描述

对编写的脚本进行测试结果如图所示:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值