shell中的基础命令

1 diff 命令

  • Linux diff命令用于比较文件的差异。

  • diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

     diff   [options]  files|directorys
         参数        文件|目录
    
  • 常用参数

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

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

在这里插入图片描述

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

在这里插入图片描述

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

合并输出,生成补丁文件
在这里插入图片描述

2 patch

patch指令让用户利用设置修补文件的方式,修改,更新原始文件

  • 下载软件:

在这里插入图片描述

  • 命令的使用:

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

在这里插入图片描述

3 cut

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。

  • cut命令常用的参数
参数含义
-d指定分割符号
-f指定显示的列
-c指定截取的字符

实验素材:
在这里插入图片描述

(1)指定分割符为 “:”,显示第3列: cut -d : -f 3 passwd

在这里插入图片描述

(2)指定分割符为 “:”,显示第3列: cut -d : -f 3-5 passwd

在这里插入图片描述
(3)指定分割符为 “:”,显示第3,5列: cut -d : -f 3,5 passwd

在这里插入图片描述
(4)指定分割符为 “:”,显示第5列之后的列:cut -d : -f 5- passwd
在这里插入图片描述
(5)指定分割符为 “:”,显示到第5列:cut -d : -f -5 passwd

在这里插入图片描述

4 sort

sort命令用于将文本文件内容加以排序, sort可针对文本文件的内容,以行为单位来排序

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

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

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

5 uniq

uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用

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

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

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

6 tr

tr命令不能从文件中读取数据,只能从标准输出中获取数据,结果写到输出设备。 tr命令可以批量转换或删除指定的字符

1- tr 'a-z' 'A-Z'		##小写转大写
2- tr  'A-Z' 'a-z'		##大写转小写

在这里插入图片描述

7 test

test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

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

在这里插入图片描述

7.1 test数字对比

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

在这里插入图片描述

7.2 test的条件关系

	-a	  ##并且
	-o	  ##或者

在这里插入图片描述

在这里插入图片描述

7.3 test对空的判定

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

在这里插入图片描述
测试:执行下列脚本来判断用户类型

!/bin/bash
[ -z "$1" ] && {
     echo username is null 
     exit
}
id $1 &>/dev/null || {
    echo user $1 is not exist
    exit
}
[ "$(id -u $1)" -eq "0" ] && {
    echo $1 is super user 
    exit
}
[ "$(id -u $1)" -le "999" ] && {
    echo $1 is system user
    exit
 }
echo $1 is common user

在这里插入图片描述

7.4 test对于文件的判定

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

在这里插入图片描述

  • 编写脚本完成以下条件

     file_check.sh 在执行时
     如果脚本后未指定检测文件报错“未指定检测文件,请指定”
     如果脚本后指定文件不存在报错“此文件不存在”
     当文件存在时请检测文件类型并显示到输出中
    
#!/bin/bash
[ -z "$1" ] && {
echo "please input filename following with script !!"
exit
}
[ -e "$1" ] || {
echo "$1 is not exit!!"
exit
}
[ -S "$1" ] && {
echo "$1 is socket "
}
[ -L "$1" ] && {
echo "$1 is link "
}
[ -f "$1" ] && {
echo "$1 is commont file "
}
[ -b "$1" ] && {
echo "$1 is block "
}
[ -c "$1" ] && {
echo "$1 is character device "
}
[ -d "$1" ] && {
echo "$1 is direct "
}

在这里插入图片描述

8 &&和||

	&&	符合条件作动作
	||	不符合条件作动作
  • 判断文件是否存在,如果存在输出yes;如果文件不存在输出no

在这里插入图片描述

9 测试:

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

ifconfig enp1s0 |  head -n 2|tail -n 1 | cut -d " " -f 10
ifconfig enp1s0 |  head -n 2|tail -n 1 | cut -c 14-27

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

sort -nt : -k 3   /etc/passwd | grep bash|tail -n 1| cut -d : -f 1
sort -nt : -k3 /etc/passwd | awk -F : '/bash$/{ print $1 }'|tail -n 1
ifconfig enp1s0 |awk -F " " '/^\ /{print $2}'|head -n 1

当前主机为web服务器,请抓取访问web服务器次数排在前5的ip地址

cut -d " " -f 1 access_log |sort |uniq -c |sort -nr|awk -F " " '{print $2}'|head -n 5

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值