千家信息网

Linux/UNIX Shell命令进阶详解

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,用cat进行拼接1 cat命令是一个日常会使用到的简单命令,cat本身表示concatenate(拼接)2 用cat读取文件的一般格式是cat file1 file2 file3.... // 这个命
千家信息网最后更新 2026年11月01日Linux/UNIX Shell命令进阶详解

用cat进行拼接

1 cat命令是一个日常会使用到的简单命令,cat本身表示concatenate(拼接)

2 用cat读取文件的一般格式是

cat file1 file2 file3.... // 这个命令将命令行参数的文件内容拼接在一起输出

3 cat命令不仅可以读取文件并拼接数据,它还能够从标准输入中进行读取。要从标准输入中读取,就要使用管道

stand_ouput | cat

4 cat命令可以用来压缩多个空行,使得被压缩成为单个

cat -s file

5 tr命令也可以把多个的'\n'字符压缩成为单个'\n'

6 cat命令的-n选项会在输出的每一行内容之前加上行号,但是这个并不会修改文件的内容

录制与回放终端会话

1 script和scriptreplay命令在绝大多数GNU/Linux发行版本上面都可以找到

2 scritp命令同样可以用于建立多个用户之间的进行广播的视频会话

第一步:打开两个终端T1和T2

第二步:在T1中输入mkfifo scriptfifo

第三步:在T2中输入以下命令cat scriptfifo

第四步:在T1中输入以下命令script -f scriptfifo

第五步:在T1中输入的commands都可以在T2中看到

文件查找与文件列表

1 find是UNIX/Linux命令行工具箱中最棒的工具之一

2 find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作

3 要列出当前目录及子目录下的所有文件以及文件夹:find base_bash

4 find命令的两个重要的参数

-print 指明打印匹配文件的文件名,当使用-print的时候,'\n'做为分割文件的定界符

-print0 指明使用'\0'作为定界符来打印每一个匹配的文件名

5 根据文件名或正则表达式匹配搜索,-name的参数指定了文件名所匹配的字符串。

比如 find . -name "*.txt" -print // 命令查找当前目录下的所有txt文件并打印出来

6 find命令有一个选项-iname,该选项的作用和-name类似,但是匹配的时候会忽略大小写

7 find命令也可以用!来否定参数意思

find . ! -name "*.txt" -print // 命令的作用是找出当前目录下的所有非txt文件

8 find命令在使用时候会遍历所有的子目录,我们可以采用深度参数来限制find命令的遍历深度。

-maxdepth和-mindepth指定最大的递归深度以及最少的递归深度(从哪一层开始向下搜索)

9 -maxdepth和-mindepth应该做为find的第三个参数出现,这样就可以第一时间限制搜索的条件,效率会提高的很多

10 类UNIX系统将所有的一切都视为文件,文件具有不同的类型,例如普通文件,目录,字符设备,块设备,符号链接,硬链接,套接字以及FIFO等

11 find命令的-type选项可以对文件搜索进行过滤

12 type参数来匹配所需要的文件类型

文件类型 类型参数

普通文件 f

符合链接 l

目录 d

字符设备 c

块设备 b

套接字 s

fifo p

13 删除匹配的文件,-delete可以用来删除find查找到的匹配文件

find . -type f -name "*.txt" -delete // 命令的作用是find找出当面目录下的所有txt文件,然后删除

14 基于文件权限和所有权进行搜索

find . -type f -name "*.txt" -perm 644 -print // 命令的作用是找到当前目录下所有权限为644的txt文件

用tr进行转换

1 tr可以用来对标准输入的字符进行替换,删除以及压缩,它可以将一组字符变成另一组字符,因而通常也被称为转换命令

2 tr只能通过stdin,而无法通过命令行参数来接受输入。

tr [options] set1 set2 // 将来自stdin的输入字符从set1映射到set2,并将其输入到stdout。

set1和set2是字符类或字符集,如果两个字符集的长度不相等,那么set2会不断重复其最后一个字符直到和set1长度相等,如果set2长度大于set1那么在set2中超出set1的部分长度就全部忽略

3 将输入字符由大写转换成小写 ,可以使用以下命令

echo "HELLO WHO IS THIS" | tr 'A-Z' 'a-z' // 'A-Z和'a-z'都是集合

4 tr有一个选项-d可以通过指定需要被删除的字符集合,将出现的stdin中的特定字符删除

echo "Hello 13 world 345" | tr -d '0-9' // 命令可以将stdin中的数字删除并输出

5 我们可以利用选项-c来使用set1的补集,-c set1等同于定义了一个集合,这集合中的字符不包含在set1中

6 tr可以像使用集合一样使用各种不同的字符类,这些字符类型如下所示

alnum: 字母和数字

alpha: 字母

cntrl: 控制字符

digit: 数字

graph: 图形字符

lower: 小写字母

print: 可打印字符

punct: 标点符号

space: 空白字符

upper: 大写字母

xdigit: 十六进制字符

7 可以按照下面的方式选择要使用的字符集: tr [:class1:] [:class2:]


排序,单一和重复

1 sort命令既可以从特定文件也可以从stdin中获取输入,并将输入写入stdout,uniq的工作模式和sort一样

2 我们可以按照下面的方式轻松的对一组文件进行排序

sort file1 file2 file3 ... > sorted // 命令把多个文件排序然后重定向到sorted

3 按数字进行排序: sort -n file

按逆序进行排序: sort -r file

按月份进行排序: sort -M file

4 如果需要合并两个排过序的文件,而且不需要对合并后的文件再进行排序,可以使用

sort -m sorted1 sorted2

5 uniq命令通过消除重复内容,从给定输入中找出单一的行。它也可以用来找出输入中出现的重复行

6 uniq只能用于排过序的数据输入,因此uniq要么使用管道,要么使用排过序的文件做为输入

只显示唯一的行: uniq -u sorted

统计个行中出现的次数: uniq -c sorted

找出文件中重复的行: uniq -d sorted

分割文件和数据

1 生成一个大小为100KB的测试文件

dd if=/dev/zero bs=100K count=1 of=data.file

上面的命令会创建一个大写为100KB的文件内容全部都是0

2 我们可以指定分割大小,将文件分割成多个更小的文件

split -b 10k data.file // 这个命令将data.file分割成多个文件,每个文件大小为10KB

根据扩展名切分文件名

1 借助%我们可以轻松将名称部分从"名称.扩展名"这种格式的文件名中提取出来

2 ${var%.*}的含义是

第一:从$var中删除位于%右侧的通配符所匹配的字符串,通配符从右向左进行匹配

第二:给var进行赋值,var=sample.jpg,那么通配符从右向左匹配到.jpg,因此删除之

3 %属于非贪婪操作,它从右到左匹配通配符的最短结果。还有一个是%%是贪婪的,匹配最长的结果

4 类似的#和%的一样,就是它的匹配是从左到右,属于非贪婪操作

那么##和%%类似

文件 命令 字符 输入 参数 目录 排序 多个 文件名 内容 类型 搜索 两个 作用 大小 字母 数字 深度 设备 通配符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是不是新科技 互联网金融 科技 互联网科技英文 互联网科技视频 西安互联网科技公司 撒么互联网科技公司 互联网科技公司名称 哈尔滨新华互联网科技 互联网科技股午盘股票涨跌 互联网科技公司需要的职位 广州慧亚互联网科技怎么样 承德科技产业互联网发展 互联网科技革命什么开始 注册互联网科技公司经营范围大全 四川慕妮娅互联网科技有限公司 互联网科技大赛获奖感言 山东有哪些互联网科技公司 浙南科技城互联网大厦招聘 工业互联网科技成果转化 互联网科技大会大佬 广东猪兼强互联网科技有限公司 智能科技公司是互联网公司吗 金诺互联网科技 港股互联网科技股 中国最先进互联网科技公司 宁夏众和广鑫互联网科技有限公司 互联网金融科技展 华夏恒生互联网科技013171 特约风豹互联网科技为什么扣费 互联网金融科技元年
0