一学就会之shell中常用的基础命令 (diff + patch + cut + sort + uniq + tr +test命令)

1.diff 对比不同

【1】实验环境
vimdiff westos westos.new此时不同的地方就会高亮(在排错的过程中可能会使用)
在这里插入图片描述
man diff查询(以下只截取了部分内容)
在这里插入图片描述
在不知道命令的使用方法时,可以man 查询。这是一个非常实用的做法,在下面一道练习中,印证了其有效性

【2】用法:
在这里插入图片描述

【3】输出信息:
[num1,num2][a|c|d][num3,num4]

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

练习:
在这里插入图片描述

【4】常用参数:

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

练习:

  • 忽略空格
    在这里插入图片描述
  • 忽略空行
    在这里插入图片描述
  • 忽略大小写
    在这里插入图片描述
  • 显示文件所有内容分并表示不同
    在这里插入图片描述
  • 对比目录
    在这里插入图片描述
  • 合并输出(生成补丁的时候可使用)
    在这里插入图片描述

2.patch

yum install patch -y
命令作用
patch 原文件 补丁文件给原文件打补丁
patch -b 原文件 补丁文件备份原文件

练习:

  • patch 原文件 补丁文件
    在这里插入图片描述
    在原文件上打补丁,原来的lyq就变为了LINUX
    在这里插入图片描述
  • -b 备份原文件
    直接使用上述命令后,原文件就不见了。所以使用参数备份原文件就很重要了。westos.orig就是原文件
    在这里插入图片描述
    注意:当orig文件已经存在时,就不要再次使用-b去备份了

3.cut

参数作用
-d :指定:为分隔符
-f指定显示的列
-c指定截取的字符(用法同-f)

-f与-c用法相同,所以此处只写了一种,大家可以替代理解

-f用法作用
-f 5显示第5列
-f 2,5显示第2列和第5列
-f 2-5显示2到5列
-f 5-显示第5列以后
-f -5显示到第5列

练习:

  • cp /etc/passwd .准备好练习文件
    在这里插入图片描述

  • -f 指定显示的列
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • -c 指定显示的字符
    在这里插入图片描述

学员命令测试:

  • ifconfig 网卡 可以显示此网卡的信息
  • 显示信息中包含此网卡使用的ip地址
  • 请用命令过滤此ip并在输出时只显示ip其他信息不显示
    脚本编写:
    在这里插入图片描述
    结果:
    在这里插入图片描述
    反思:在练习的过程中,我才真正的理解了-d 指定分隔符是如何使用的。在写脚本的过程中要是可注意到自己想要实现的作用是什么:“ 如果网卡名称为空,要提示网卡名称;如果网卡名称正确,则得到正确的结果;如果网卡名称错误,报错即可”

4.sort

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

练习:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

学员命令测试:

  • ls -l 目录 可以显示目录中所有文件案的属性
  • 请按照文件大小进行排序并找出最大的2个文件并显示其名称
    方法一:
    在这里插入图片描述
    方法二:
    使用man ls查询ls的使用方法可以发现,直接使用ls -S即可进行排序!!
    在这里插入图片描述
    在这里插入图片描述

5.uniq

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

练习:
在这里插入图片描述
在这里插入图片描述

6.tr

命令作用
tr ‘a-z’ ‘A-Z’小写转大写
tr ‘A-Z’ 'a-z大写转小写

练习:
在这里插入图片描述

7.&& ||

  • && 符合条件做动作

  • || 不符合条件做动作
    练习:
    可以当作‘与’和‘非’来理解

8.test

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

【1】test数字对比

命令作用
-eq等于
-ne不等于
le小于等于
-lt小于
-ge大于等于
-gt大于

练习:
在这里插入图片描述
在这里插入图片描述

注意:这两种的判断次数不相同

[root@xixi mnt]# [ "$a" -eq "$b" ] && echo yes || echo no
no   一次判断,效率高
[root@xixi mnt]# [ ! "$a" -eq "$b" ] && echo yes || echo no
yes  两次判断:1.条件是否成立;2.条件不成立的时候  可以理解为条件判断后取非
[root@xixi mnt]# 

【2】test的条件关系

参数作用
-a并且
-o或者

练习:

  • -a 并且
    **t

  • -o 或者
    在这里插入图片描述

【3】test对空的判定

参数作用
-nnozero 判定内容不为空
-zzero 判定内容为空

在这里插入图片描述

【4】test对于文件的判定
软链接和硬链接的作用和区别

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

练习:

  • 对比哪个文件更新
    在这里插入图片描述
  • 文件节点号一致

在这里插入图片描述

  • 软连接
    在这里插入图片描述
  • -s 套接字
    套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层连接唯一地被通信两端的两个端点(即两个套接字)所确定。
    套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡的传输介质将这段信息发送给另一台主机的Socket中,使这段信息能传送到其他程序中。因此,两个应用程序之间的数据传输要通过套接字来完成。
    在这里插入图片描述
  • -b块设备 -c 字符设备

在这里插入图片描述

学员检测:
file_check.sh 在执行时

  • 如果脚本后没有检测文件报错“未指定检测文件,请指定”
  • 如果脚本后指定文件不存在报错“此文件不存在”
  • 当文件存在时请检测文件类型并显示到输出中
    一开始(没有完成单纯的显示文件类型)
    在这里插入图片描述
    在这里插入图片描述
    修改后
    在这里插入图片描述
    在这里插入图片描述

反思:编写脚本的时候,“没有检测文件”和“指定文件不存在”这两部分当时除了点问题。错误原因是使用了[ -f "$1" -o -d "$1" ]来查验是否存在文件或目录,但是这样就与[ -e "$1" ]的作用相重复后,后来仔细思考了一下其中的逻辑关系:

  • 文件是否存在 [ -e “$1”]
  • "$1"是否为空 [ -z “$1”]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值