Shell中常用的命令

1. diff用法

diff file1 fil2
  • 以后面的文件file2作为标准 比较file1相对于file2来说有什么不同
  • < 表示第一个文件中的内容
  • 表示第二个文件中的内容

  • a表示添加–add
  • c表示更改–change
  • d表示删除–delete
    在这里插入图片描述
    在这里插入图片描述

2.diff比较目录

diff -r /etc/ /tmp/
  • 比较的结果是目录中文件的不同 而不是文件内容的不同

3.patch用法

  • patch常用来打补丁
    在这里插入图片描述
patch file2 file2.path 
yum instal; patch.x86_64 -y
patch file2 file2.path 		#再用patch命令打补丁
cat file2
cat file1
用这种方法打补丁 文件会直接被修改成指定文件内容 原文件内容会被覆盖
要留下原文件内容:
cat file3
cat file1
diff -u file3 file1 >file3.path
patch -b file3 file3.path	#-b表示保留原文件内容
ls
cat file3.orig 				#原文件内容

4.cut命令

  • cut命令通常用来截取
参数说明
-c指定截取字符的位置
-d指定分隔符
-f指定要截取的列
  • 使用:
cp /etc/passwd .
cut -d : -f 1 passwd		#以:为分隔符 截取passwd文件第一列的内容
cut -d : -f 1,3 passwd	#以:为分隔符 截取passwd文件第一列和第三列的内容
cut -d : -f 3- passwd		#以:为分隔符 截取passwd文件第三列及后面所有的内容
cut -c 1-3 passwd		#截取passwd文件第一个字符到第三个字符的内容
cut -c 1,3 passwd		#截取passwd文件第一个字符和第三个字符的内容

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

5.sort和uniq

  • sort命令通常用来排序
  • uniq命令对重复字符做相应的处理
参数说明
sort -n纯数字排序
sort -r倒序
sort -u去掉重复数字
sort -o输出到指定文件中
sort -t指定分隔符
sort -k指定要排序的列
uniq -u显示唯一的行
uniq -d显示重复的行
uniq -c每行显示一次并统计重复次数
  • 使用:
    在这里插入图片描述
sort numbers				#只对数字的第一位正向排序
sort -n numbers				#纯数字正相排序
sort -rn numbers			#纯数字倒序
sort -rn numbers -o NUM	S	#将排序结果输出到指定文件中
sort -u numbers				#去掉重复数字并只对数字的第一位正向排序
sort -urn numbers			#去掉重复数字并纯数字倒序
sort -n numbers | uniq -c	#每行显示一次并统计重复行数
sort -n numbers | uniq -d	#显示重复的行
sort -n numbers | uniq -u	#显示唯一的行

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

6.seq命令的用法

  • seq:squeue 是一个序列的缩写
  • 主要用来输出序列化的东西
  • 用法:
seq ... 尾数
seq ... 首数 尾数
seq ... 首数 增量 尾数
参数说明
-f (- -format)格式:使用printf样式的浮点格式
-s(- -separator)字符串:使用指定字符串分隔数字(默认使用:\n)
-w(- -equal-width)自动补位:在列前添加0使得宽度相同
- -help显示帮助信息并退出
- -version显示版本信息并退出
  • 使用:
seq 5			
seq -s '@' 5			#-s指定分隔符
seq -s '#' 5
seq -s ' ' 5
seq -s '' 5
seq -w 10				#-w自动补位
seq -10 2 4				#打印从-10到4的序列 增量为2
seq -f "%03g" 98 103	#以0补位(3表示共3位)
seq -f "%3g" 98 103		#共3位 默认以空格补位

在这里插入图片描述

7.join命令

  • 1.连接
  • 内连接:将两个文件中每列第一个字符相同的行合并
  • 全连接(显示左边和右边所有记录)
join file1 file2			#内连接:将两个文件中每列第一个字符相同的行合并
join -a1 file1 file2		#显示左边文件中的所有记录(右边文件中没有匹配的不显示)
join -a2 file1 file2		#显示右边文件中的所有记录(左边文件中没有匹配的不显示)
join -a1 -a2 file1 file2	#全连接(显示左边和右边所有记录)

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

  • 2.指定输出字段
  • -o:指定输出字段
join -o 1.1 file1 file2		#指定输出第一个文件的第一个字段
指定输出多个字段:
join -o 1.1 2.2 file1 file2 #指定输出第一个文件的第一个字段和第二个文件的第二个字段

在这里插入图片描述

  • 3.指定分隔符
  • -t:指定分隔符
  • 在下面的例子中,如果不指定分隔符,它会按照第一列的内容连接(ABCD…)
join -t ':' file3 file4	#以:为分隔符连接
  • 4.不匹配的行输出
  • -v 1:不匹配的行输出
join -v 1 -a1 -a2 file1 file2		#-v后面的1不能省略

8.tr命令的用法

  • tr命令主要功能是转化
参数说明
-c -C字符串替换,要求字符集为ASCII
-d删除字符
-s删除所有重复出现字符序列,只保留第一个(即将重复出现字符压缩为一个字符串)
-t删除第一字符集较第二字符集多出的字符
参数说明
[:gidit:]所有数字
[:graph:]所有可打印字符,不包括空格
[:lower:]所有小写字符
[:upper:]所有大写字符
[:print:]所有可打印字符,包括空格
[:punct:]所有标点字符
[:space:]所有横向或纵向的空白
  • 使用:
    在这里插入图片描述

9.xargs命令

  • 1.xargs的功能
  • xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具
  • xargs可以将管道或标准输入数据转换成命令行参数,也能够从文件的输出中读取数据
  • xargs也可以将单行或多行文本输入转换为其他格式(多行变单行,单行变多行)
  • xargs默认的命令是echo,这以为这通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代
  • xargs存在的意义:
    它能够捕捉一个命令的输出,然后传递给另外一个命令
    由于很多命令不支持|管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令
    例如:
    在这里插入图片描述
  • 2.xargs的使用
  • 例:
    在这里插入图片描述
cat test.txt | xargs		#规范文件中的内容
cat test.txt | xargs -n4	#-n4指定每行4个字符

在这里插入图片描述

  • 例:
echo "hahaDhahaDhahaDhaha" | xargs -dD		#删除字符D
echo "hahaDhahaDhahaDhaha" | xargs -dD -n2	#指定每行2个字符
echo "hahaDhahaDhahaDhaha" | xargs -dD -n3

在这里插入图片描述

  • 例3:
echo "one two three four"
echo "one two three four" | mkdir
echo "one two three four" | xargs mkdir
ls

在这里插入图片描述

  • 例4:
[root@localhost 12]# echo "one two three four" | xargs -p touch	#-p询问是否执行指定动作
touch one two three four ?...		#不输入yes就不会执行
[root@localhost 12]# ls
file1  file2  four  one  test.txt  three  two
[root@localhost 12]# echo "one two three four" | xargs -p touch
touch one two three four ?...
[root@localhost 12]# echo "one two three four" | xargs -t rmls	#-t不询问 直接执行指定动作
rmls one two three four 
xargs: rmls: No such file or directory
[root@localhost 12]#
  • 例5:
sh -c "echo filel;mkdir file"
ls
rm -fr file
vim 1.txt
cat 1.txt | xargs -I name sh -c 'echo name;mkdir name'
ls
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值