Linux(23)—— shell操作 [ diff cut sort 等]

Linux(23)—— shell操作(1)

  这几章笔记是针对redhat8系统中bash的操作指令做记录。

1. diff

  用于对比两文件或者目录内容是否相同。当相同时无提示信息,不同时返回输出信息。

[root@rhserver Desktop]# diff [options] files|directorys
options功能
-b忽略空格
-B忽略空行
-i忽略大小写
-c显示文件所有内容并标示不同
-r对比目录
-u合并输出
	#	提示信息说明
	输出格式   文件1存在差异行数+提示信息+文件2存在差异行数
	
	提示信息:
	a 			#添加
	c 			#更改
	d 			#删除	
	
	<			#文件1存在差异的内容
	>			#文件2存在差异的内容

file1,file2的内容如下所示
 当文件内容相同时,diff运行无提示信息
在这里插入图片描述
 修改文件内容:
在这里插入图片描述
在这里插入图片描述
3c3,4 表示第一个文件的第三行与第二个文件的第三、四行存在更改导致文件差异。<33 表示file1存在差异的内容为 33所在行,同理file2的存在差异内容也被标出。

 当存在空格时,添加参数可以对空格进行忽略。
在这里插入图片描述
 对比目标为目录时,则可以提示出目录内文件的差异。
在这里插入图片描述

2. patch

  用于针对两个文件的差异产生补丁,打上补丁之后两文件内容变相同。
  用法:

[root@rhserver Desktop]# patch [OPTION] [ORIGFILE [PATCHFILE]]

  首先需要安装 patch应用,补丁内容 依靠 diff -u 产生。
在这里插入图片描述
  然后针对文件应用产生的补丁,目标文件应用补丁后内容将变为另一个文件的内容-b 参数可以备份源文件。

在这里插入图片描述

3. cut

  cut命令可以将文本进行分割显示
  用法:

[root@rhserver Desktop]# cut [OPTION]  [FILE]
	-d		#指定分隔符
	-f		#指定显示的列 
			# 3 表示第三列 4-5表示4-5列  1,3表示1和3列 
			# -3 表示到第三列  3-表示3列以后
	-c		#指定截取的字符(数字用法同-f)
  • 截取 /etc/passwd 内 前5个用户的用户名:

在这里插入图片描述

  • 截取过滤网卡ip:
    在这里插入图片描述

3. sort

   对文件内容进行排序显示。
  使用:

[root@rhserver Desktop]# sort [OPTION]  [FILE]
	-n		#纯数字排序
	-r		#倒叙
	-u		#去掉重复
	-o		#输出到指定文件
	-t		#指定分隔符
	-k		#指定排序的列

 对passwd文件后5行,针对uid进行降序排列输出:
在这里插入图片描述

4. uniq

   对文件内容进行去重显示。
  使用:

[root@rhserver Desktop]# uniq [OPTION]  [FILE]
	-c	#合并重复并统计重复个数
	-d	 #显示重复的行
	-u	 #显示唯一的行

在这里插入图片描述

  • 找出能登陆系统用户中UID最大的用户,并显示其名称:
    在这里插入图片描述
  • 找出文件中出现次数最多的数字 并输出:
uniq -c file1 | sort -n -t ' ' -k 7 | awk '{ print$2 }'|tail -n `uniq -c file1 | sort -n -t ' ' -k 7 | awk '{ print$1 }'|uniq -c|tail -n 1|awk '{ print$1 }'`

在这里插入图片描述

5. tr

  对文件内容指定字符进行替换。
  使用:

[root@rhserver Desktop]# tr [OPTION] SET1 
[root@rhserver Desktop]# tr 'a-z' 'A-Z'	 file1	#小写转大写
[root@rhserver Desktop]# tr 'A-Z' 'a-z'	 file1	#大写转小写

 支持单个字符的各种替换:在这里插入图片描述

6. test

  判断条件是否成立,不输出信息,需要搭配 && 与 || 使用
  使用:

[root@rhserver Desktop]# test 判断信息 && 结果成立动作|| 不成立动作
[root@rhserver Desktop]# [ 判断信息 ] && 结果成立动作|| 不成立动作

对数字判断:

 #		test数字对比:
	 =		#等于
	!=		#不等于
	-eq		#等于
	-ne		#不等于
	-le		#小于等于
	-lt		#小于
	-ge		#大于等于
	-gt		#大于

 #		test逻辑运算
	-a		#条件与
	-o		#条件或
	
 #		test空判定
	-n		#内容不为空
	-z		#内容为空
 
 #		test文件判定
	-ef		#节点号是否一致(硬链)
	-nt		#文件1是否比文件2新
	-ot		#文件1是否比文件2旧
	-d		#是否为目录
	-S		#是否为套结字
	-L		#是否为软连接
	-e		#是否为存在
	-f		#是否为普通文件
	-b		#是否为快设备
	-c		#是否为字符设备
  • 执行下列脚本来判断用户类型

user_check.sh 用户
用户类型为
super user
system user
common user

#!/bin/bash
[ -z "$1" ] && {
        echo "Please input username!"
        exit
}
uid=$( grep -E "^$1" /etc/passwd | cut -d : -f 3 )
[ -z "$uid" ] && {
        echo "User is not exist!"
        exit
}
[ "$uid" -eq 0 ] && {
        echo "This is a super user."
        exit
}
[ "$uid" -le 999 ] && {
        echo "This is a system user."
        exit
}||{
        echo "This is a common user."
}

在这里插入图片描述

  • 编写脚本完成以下条件

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

[ -z "$1" ] && {
	echo "未指定检测文件,请指定!"
	exit
}
[ -e "$1" ] || {
	echo "此文件不存在"
	exit
}
[ -L "$1" ] && {
        echo "软连接"
        exit
}
[ -f "$1" ] && {
        echo "普通文件"
        exit
}
[ -S "$1" ] && {
        echo "套接字"
        exit
}
[ -b "$1" ] && {
        echo "快设备"
        exit
}
[ -c "$1" ] && {
        echo "字符设备"
        exit
}
[ -d "$1" ] && {
        echo "目录"
        exit
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值