欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux学习笔记—shell常用指令(一)

程序员文章站 2022-05-13 11:05:42
...

1.diff命令

diff命令用于比较两个文件或目录的不同。比如,游戏、软件更新,只更新补丁文件。

diff [options] target1 target2
diff file1 file2
diff directory1 directory2 

diff命令常用参数

-a 所有的文件都视为文本文件来逐行比较,即使不是文本文件. 
-b 忽略空格引起的变化.
-B 忽略插入删除空行引起的变化.
-c 显示全部内文,并标出不同之处.
-i 不检查大小写的不同.
-p 若比较的文件为C语言的程序代码文件时,显示差异所在的函数名称.
-q 仅报告文件是否相异,不报告详细的差异. 
-r 当比较目录时,递归比较任何找到的子目录. 
-u 以合并的方式来显示文件内容的不同.

[num1,num2][a|c|d][num3,num4]
num1,num2表示在第一个文件中的行数
a表示添加——add
c表示更改——change
d表示删除——delete
< 表示第一个文件中的内容,>表示第二个文件中的内容,---分割线
num3,num4表示在第二个文件中的行数

示例一:

[root@localhost mnt]# cat westos
123
[root@localhost mnt]# cat westos1
123
456
[root@localhost mnt]# diff westos westos1  
1a2     ##第1个文件添加第2个文件的第2行的456后等于第2个文件
> 456

示例二:

[aaa@qq.com mnt]# cat westos
1234
[aaa@qq.com mnt]# cat westos1
123
[aaa@qq.com mnt]# diff westos westos1  ##两个文件内容对比
1c1
< 1234
---
> 123

示例三:

[root@desktop5 mnt]# cat westos
123
456
[root@desktop5 mnt]# cat westos1
123
[root@desktop5 mnt]# diff westos westos1  ##
2d1
< 456

示例四:

[root@localhost mnt]# mkdir linux
[root@localhost mnt]# mkdir unix
[root@localhost mnt]# touch linux/westos

测试:
Linux学习笔记—shell常用指令(一)

2.patch命令

patch 源文件 补丁文件
[root@desktop5 mnt]# diff -u westos westos1        ##补丁
[root@desktop5 mnt]# diff -u westos westos1 > file.path   ##补丁导入补丁文件
[root@desktop5 mnt]# yum install patch -y       ##安装软件
[root@desktop5 mnt]# patch -b westos file.path  ##-b:备份
patching file westos
[root@desktop5 mnt]# ls
file.path  westos  westos1  westos.orig    ##westos.orig为原备份文件,即原westos文件

测试:
Linux学习笔记—shell常用指令(一)
Linux学习笔记—shell常用指令(一)

3.cut命令

cut命令多用于字符截取

cut -d        ##指定分隔符
cut -f 1,7 | 1-7 ##指定截取的列
cut -c 1,4 | 1-4 ##指定截取的字符位置

示例:

[root@localhost mnt]# cp /etc/passwd .    ##可删除一部分内容

Linux学习笔记—shell常用指令(一)
示例1:

[root@localhost mnt]# cut -d : -f 1 passwd    ##截取passwd文件以:间隔的第一列

Linux学习笔记—shell常用指令(一)
示例2:

[root@localhost mnt]# cut -d : -f 1-3 passwd  ##截取passwd文件以:间隔的第一列到第三列

Linux学习笔记—shell常用指令(一)
示例3:

[root@localhost mnt]# cut -d : -f 1,3 passwd  ##截取passwd文件以:间隔的第一列和第三列

Linux学习笔记—shell常用指令(一)
示例4:

[root@localhost mnt]# cut -d : -f 3- passwd   ##截取passwd文件以:间隔的第三列及其以后

Linux学习笔记—shell常用指令(一)
示例5:

[root@localhost mnt]# cut -c 1,3 passwd       ##截取passwd文件第一个和第三个字符

Linux学习笔记—shell常用指令(一)

4.sort命令

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

实验环境:
Linux学习笔记—shell常用指令(一)

示例1:

sort westos                 ##默认按第一列数字进行排序

Linux学习笔记—shell常用指令(一)
示例2:

sort -n westos              ##默认纯数字进行排序

Linux学习笔记—shell常用指令(一)
示例3:

[root@localhost mnt]# sort -urn westos   ##纯数字倒序,并去掉重复的数字

Linux学习笔记—shell常用指令(一)
示例4:

[root@localhost mnt]# sort -urn westos -o file   ##结果输出到file文件中

Linux学习笔记—shell常用指令(一)


实验环境:
Linux学习笔记—shell常用指令(一)
示例5:

[root@localhost mnt]# sort -t : -k 2 -n westos ##以:间隔的第二列纯数字排序

Linux学习笔记—shell常用指令(一)

5.uniq命令

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

实验环境:
Linux学习笔记—shell常用指令(一)
示例1:

Linux学习笔记—shell常用指令(一)

示例2:
Linux学习笔记—shell常用指令(一)
示例3:
Linux学习笔记—shell常用指令(一)

示例4:

sort -n westos1 | uniq -d    ##组合使用,数字排序后,显示重复的数字

Linux学习笔记—shell常用指令(一)

示例5:

 sort -n westos1 | uniq -c    ##组合使用,数字排序后,统计重复的次数

Linux学习笔记—shell常用指令(一)
示例6:

sort -n westos1 | uniq -u    ##组合使用,数字排序后,显示不重复的数字(即唯一的行)

Linux学习笔记—shell常用指令(一)

6.&&、|| 命令

&& 用来执行条件成立后执行的命令
|| 用来执行条件不成立后执行的命令


实验一:ping命令成功 yes 不成功no
铺垫:

[root@localhost mnt]# ping -c1 -w1 172.25.254.5 &> /dev/null  ##结果放入垃圾箱  
[root@localhost mnt]# ping -c1 -w1 172.25.254.5 &> /dev/null && echo yes || echo no                          

实验:

[aaa@qq.com mnt]# vim check_ip.sh
#!/bin/bash
ping -c1 -w1 $1 &>/dev/null && echo $1 is up || echo $1 is down

测试:
Linux学习笔记—shell常用指令(一)
实验二:找出目录下最大的文件check_file.sh
铺垫:

[root@localhost mnt]# ls -Sl /mnt/ | grep -v total
[root@localhost mnt]# ls -Sl /mnt/ | grep -v total | awk -F " " 'NR==1{print $9}'

Linux学习笔记—shell常用指令(一)
Linux学习笔记—shell常用指令(一)
实验:

[aaa@qq.com mnt]# vim check_file.sh
#!/bin/bash
ls -Sl $1 | grep -v total | awk -F " " 'NR==1{print $9}'

测试:
Linux学习笔记—shell常用指令(一)