博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell 脚本中的常用命令(diff、patch、cut、sort、uniq、tr、&&与||、test)
阅读量:3934 次
发布时间:2019-05-23

本文共 3835 字,大约阅读时间需要 12 分钟。

diff和patch

diff通常比较文件的内容,patch常用来打补丁

diff的输出信息:         [num1,num2]  [ a | c | d ]  [num3,num4]         num1,num2               第一个文件中的行         a                       添加         c                       更改         d                       删除         <                       第一个文件中的内容         >                       第二个文件中的内容

当作比较的两文件无差异时,diff命令不显示信息

在这里插入图片描述

diff后更换文件顺序的显示

在这里插入图片描述

c表示更改

在这里插入图片描述

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

diff -bB westos westos1 比较时忽略空格和空行

在这里插入图片描述

diff -i westos westos1 忽略大小写

在这里插入图片描述

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

在这里插入图片描述

diff -r sss/ test/ 显示目录的不同

在这里插入图片描述

diff -u westos westos1 > combine 将两文件合并,然后导入到新文件中

在这里插入图片描述

patch dnf install patch -y                              安装patch diff -u westos westos1 > westos.path              生成补丁文件 patch -b westos westos.path                       给westos打补丁同时备份原文件

在这里插入图片描述

CUT命令

cut

-b                                         指定字节       -d  :                                      指定“:”为分隔符(此处指原文件中的分割符)       -f                                         指定列       -c                                         指定截取字符       --compement                                反选       --output-delimiter=分割符                   指定输出的分割符

cut -d : -f 1 passwd

在这里插入图片描述

cut -d : -f 1-3 passwd

在这里插入图片描述

cut -c 1,3 passwd

在这里插入图片描述

cut -d " " -f 1-3 westos --complement

cut -d " " -f 1-2 westos --complement --output-delimiter=@

在这里插入图片描述

练习1:

用命令过滤ifconfig中此网卡的ip地址,输出时只显示ip,其它信息不显示

ifconfig ens160 | grep "inet " | cut -c 14-26

在这里插入图片描述

sort命令和uniq命令

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

sort numbers 默认是正向排序,而且是对每行的第一个单个数字进行排序

在这里插入图片描述

sort -n numbers 纯数字排序(此时是根据数字的整个大小排序)

在这里插入图片描述

sort -urn numbers 反向纯数字去重排序

在这里插入图片描述

sort -urn numbers -o NUM 将输出导入文件

在这里插入图片描述

sort -t : -k 2 numbers 以:为分隔符对第二列数字进行排列

在这里插入图片描述

sort -t : -k 2 numbers -urn 以:为分隔符对第二列数字进行纯数字去重排列

在这里插入图片描述

练习2:

ls -l目录 可以显示目录中所有文件的属性

请按照文件大小进行排序并找出最大的2个文件并显示其名称

ls -l * | cut -d " " -f 5- | sort -nr | head -n 2 | cut -d " " -f 5

在这里插入图片描述

uniq -u     显示唯一的行    uniq -d     显示重复的行    uniq -c     每行显示一次并统计重复行数

sort -n NUM | uniq -c 进行纯数字排序之后 重复数字只显示一次,并且在左边显示重复次数

在这里插入图片描述

sort -n NUM | uniq -d 进行纯数字排序之后显示重复的行

在这里插入图片描述

sort -n NUM | uniq -u 行纯数字排序之后显示不重复的行

tr命令

tr ‘a-z’ ‘A-Z’ < westos 小写转大写

tr ‘A-Z’ ‘a-z’ < westos 大写转小写

在这里插入图片描述

&&与||命令

&&表示正确,||表示错误

ping -c1 -w1 172.25.254.30 &> /dev/null && echo yes ||echo no 能ping通 输出为yes 不能为no

在这里插入图片描述

将上述命令写作脚本

#!/bin/bashping -c -w1 172.25.254.$* &>/dev/null && {        echo yes        exit}||{        echo no        exit}

在这里插入图片描述

test命令

test = [ ] test命令就等于“[ ]”

test数字对比       =        相等         !=      不相等         num1 -eq num2     判断 num1 是否和 num2 相等         num1 -ne num2     判断 num1 是否和 num2 不相等         num1 -gt num2     判断 num1 是否大于 num2          num1 -lt num2     判断 num1 是否小于 num2         num1 -ge num2     判断 num1 是否大于等于 num2         num1 -le num2     判断 num1 是否小于等于 num2

在这里插入图片描述

练习3:

做一个监控脚本:当/使用量超过80%时发送警告邮件到root用户邮箱中

​​​​​​​#!/bin/bash [ "`df -h / | tail -n 1 | awk '{print$5}' | cut -d "%" -f 1 `" -ge "20" ] && {         echo "warning: / is full!" | mail -s warnimg root         exit }
test的条件关系和对空的判定         -a             并且         -o             或者         -n             判定内容不为空         -z             判定内容为空

3.test对文件的判定

-ef 文件id是否一致

在这里插入图片描述

-nt 文件1是否比文件2新

在这里插入图片描述

-ot 文件1是否比文件2老

在这里插入图片描述

-d 目录

在这里插入图片描述

-S 套接字

-L 软连接

在这里插入图片描述

-e 存在

在这里插入图片描述

-f 普通文件

在这里插入图片描述

-b 块设备

在这里插入图片描述

-c 字符设备

在这里插入图片描述

练习4:编写脚本完成以下任务

file_check.sh 在执行时

如果脚本后未指定检测文件,报错“未指定检测文件,请指定”

如果脚本后指定文件不存在,报错“此文件不存在”

当文件存在时,请检测文件类型并显示到输出中

#!/bin/bash[ -z "$*" ] && {        echo "ERROR: please input check file!!"        exit} [ -e "$*" ] || {        echo "ERROR: please input correct file!!"        exit} [ -L "$*" ] && {        echo "The input file is soft link"        exit} [ -f "$*" ] && {        echo "the input file is a common file"        exit} [ -d "$*"] && {        echo "the input file is adirectory"        exit}

转载地址:http://doegn.baihongyu.com/

你可能感兴趣的文章
规则 - 利用CDN缓存
查看>>
什么是统计学中的 Standard Error ( SE )?
查看>>
统计学中的标准差(SD)和 平均值的标准误差(SEM)的区别
查看>>
[数据挖掘与预测分析] 单变量统计分析思考问题
查看>>
[统计学笔记] (十三)指数分析(2)
查看>>
Data Science 到底是什么?
查看>>
机器学习(Machine Learning)和传统的数据统计分析(Data Statistics)有什么区别?
查看>>
统计学、统计学习和统计推断之间的关系
查看>>
PMP笔记:质量管理的七个工具
查看>>
悦读:重新定义公司-谷歌是如何运营的
查看>>
研发主管的烦恼:周一早晨延迟的项目会议
查看>>
研发主管的烦恼:难以执行的绩效考核
查看>>
精益Scrum(五)
查看>>
精益Scrum(六)
查看>>
精益Scrum(七)
查看>>
软件测试管理—如何写好软件测试计划书
查看>>
解读一名软件测试经理所需要具备的能力
查看>>
有效的软件测试度量
查看>>
软件评测和测试国家现行标准
查看>>
理解测试策略
查看>>