当前位置:网站首页>第四章 --- 了解标准设备文件、过滤器和管道
第四章 --- 了解标准设备文件、过滤器和管道
2022-04-23 04:26:00 【在人间负债^】
了解标准设备文件、过滤器和管道
了解标准设备文件
Linux 将所有的输入输出设备都看作是特殊文件
标准输入文件
需要执行输入的命令时,Shell
翻译命令并将键盘作为默认输入源。键盘被称为标准输入文件。
cat
命令后接一个文件名时,会显示所有行,如果没有文件名,cat
命令会从标准输入文件获得其输入
cat
命令等待键盘的输入,从键盘输入字符并按 Eenter 键时,字符会显示在屏幕上
输入:
cat This is a test to depict
输出:
This is a test to depict
输入多少行都行,如果要提示输入结束,需要按 Ctrl + d
键
在 Linux 中,不是所有的命令都来自标准输入文件,cd
命令不使用标准输入文件
在 Linux 中,会为所有打开的文件(包括标准文件)赋一个称为文件描述符的数字。文件描述符 0 被赋给标准输入文件
标准输出文件
Shell
将显示器作为其执行的任何命令的默认输出设备。显示器被称为标准输出文件。
发出 ls
命令时,Shell
执行命令将其输出(即目录列表)发生到标准输出文件
不是所有命令都生成输出,mkdir
命令不使用标准输出文件
文件描述符 1 表示标准输出文件
标准错误文件
例如:cat
命令后跟一个不存在的文件名、cp filel dirl
,对 file
或 dirl
没有权限
文件描述符 2 表示标准错误文件
重定向输入或输出
- 输入重定向
- 输出重定向
- 错误重定向
输入重定向
cat < test1
<
表示从文件 test1
重定向输入。
cat
将文件 test1
的每一行都看作是输入并显示在显示器上
上述命令可以通过文件描述符来写
cat 0< test1
0<
表示输入重定向
输出重定向
cat test1 > out_test
>
表示将输出重定向到文件 out_test
,也就是将 cat
命令的输出写入磁盘文件 out_test
如果 out_test
文件不存在,先创建为空文件,再写入
如果 out_test
文件存在,则将之前的内容删除,再写入
cat test1 >> out_test
将输出附加到文件 out_test
使用文件描述符来写
cat test1 1> out_test
cat test1 1>> out_test
错误重定向
cat test_2 2> error-mesg
假设 test_2
不在当前目录中,因此,当用户试图执行此命令时,Linux 会生成一个错误消息,然后将错误消息写入到文件 error-mesg
使用过滤器
过滤器是一个程序,从标准输入文件获得输入,处理(或过滤)它并将输出发送到标准输出文件
grep 过滤器
grep 过滤器是按照正则表达式进行搜索
文件名是可选的,如果没有文件名,grep
等待标准输入,输入一行后,grep
在行中搜索正则表达式,如果包含该特定表达式就显示此行,反之不显示。
按键 Ctrl + d
表示输入结束
指定正则表达式
字符 | 用法 | 事例 |
---|---|---|
[] | 与一组字符中的任意一个匹配 | grep “New[abc]” |
[]里面加上- | 与一个范围中的字符中的任意一个匹配 | grep “New[a-c]” |
^ | 其后的样式必须出现在每行的开始 | grep “^New[abc]” |
[]里面加上^ | 样式不得包含指定集中的任何字符 | grep “New[ ^ a-c]” |
$ | 其之前的样式必须出现在每行的末端 | grep “New[abc]$” |
.(点) | 匹配任意一个字符 | grep “New.[abc]” |
(反斜杠) | 或略其后接的字符的特殊意义 | grep “New.[abc]” |
grep 过滤器选项
grep过滤器还有一些选项,可用于更改命令的输出
- -n:打印与样式匹配的每行及其行号。行号打印在行首。
- -c:打印与样式匹配的行数
- -v:打印与正则表达式指定的样式不匹配的所有行
wc 过滤器
wc 过滤器是用于计算磁盘文件或标准输入文件中的行数、字数和字符数
提供文件名
wc test
输出:1 5 22 test
表示文件test
中有1行、5个单词和22个字符
不提供文件名
wc wc is a filter
按Ctrl + d
输出:1 4 15
wc 过滤器的选项
选项 | 描述 |
---|---|
-l | 显示行数 |
-w | 显示词数 |
-c | 显示字符数 |
cut 过滤器
当需要从特定命令(ls或who)的输出抽取特定的列式,可以使用 cut 过滤器
选项 | 描述 |
---|---|
-f | 显示指定的列 |
-c | 显示指定的字符 |
-d | 指定列定界符。Tab是默认列定界符 |
tr 过滤器
- tr 过滤器可被用于将一组字符翻译成另一组。
- 还可用于删除重复出现的字符。
删除重复出现的字符(压缩)
-s
用于将重复出现的字符压缩成一个字符
转换大小写
tr "[a-z]" "[A-Z]"
将小写字符转换为大写字符
sort 过滤器
sort 过滤器按升序排列标准输入中的每行。
需要输入 sort 命令,然后输入要排序的数据,接着需要按 Ctrl + d
键排序数据
sort 过滤器的选项
- -r 选项:按反序(降序)排序输入
- -f 选项:sort 过滤器以字符的 ASCII 码值的顺序为由数字、字母和其他字符构成的输入排序
- -n 选项:以非 ASCII 顺序排列数字
- < filename >:排序指定文件的内容,按排序的顺序显示文件的行
- +pos1 -pos2 选项:按特定列的顺序排序文件
- -t 选项:基于特定列分隔符排序文件
- -o 选项:将 sort 过滤器的输出保存在磁盘文件上,而不是显示在标准输出上
使用管道
Linux 具有组合过滤器和其他命令(例如ls
)的功能,通过这种方式过滤器或命令的标准输出可作为标准输入发送给另一个过滤器或命令
举例
ls > tempfile
more tempfile
此外,通过第一个命令将目录的列表存储在文件 tempfile 中,随后此文件被 more 命令显示内容
通过 Linux 管道功能,可组合这两个步骤并做为一个命令执行,无需创建临时文件
ls | more
竖线( | )是管道字符,指示 Shell 将 " | " 之前的命令的输出作为输入发送到之后的命令
管道功能的另一个优势是不必重写实用程序来执行复杂的任务
tee 命令
tee 命令读取标准输入并将其写到标准输出和文件。
如果要写入数据的文件不存在,则将创建该文件。
如果文件已经存在,就重写文件内容。
-a
选项可用于将新内容附加到现有文件
版权声明
本文为[在人间负债^]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_52354698/article/details/124127002
边栏推荐
- Difference between LabVIEW small end sequence and large end sequence
- The difference between lists, tuples, dictionaries and collections
- [BIM introduction practice] wall hierarchy and FAQ in Revit
- 【时序】基于 TCN 的用于序列建模的通用卷积和循环网络的经验评估
- 优麒麟 22.04 LTS 版本正式发布 | UKUI 3.1开启全新体验
- VHDL语言实现32位二进制数转BCD码
- 顺序表的基本操作
- What is software acceptance testing? What are the benefits of acceptance testing conducted by third-party software testing institutions?
- 【BIM+GIS】ArcGIS Pro2.8如何打开Revit模型,BIM和GIS融合?
- matlab讀取多張fig圖然後合並為一張圖(子圖的形式)
猜你喜欢
QT program integration easyplayer RTSP streaming media player screen flicker what is the reason?
优麒麟 22.04 LTS 版本正式发布 | UKUI 3.1开启全新体验
As a code farmer, what kind of experience is it that a girlfriend can code better than herself?
[BIM introduction practice] Revit building wall: detailed picture and text explanation of structure, envelope and lamination
Go反射法则
Does China Mobile earn 285 million a day? In fact, 5g is difficult to bring more profits, so where is the money?
Express中间件①(中间件的使用)
Shopping mall for transportation tools based on PHP
Nature medicine reveals individual risk factors of coronary artery disease
Bridge between ischemic stroke and intestinal flora: short chain fatty acids
随机推荐
QT program integration easyplayer RTSP streaming media player screen flicker what is the reason?
[AI vision · quick review of NLP natural language processing papers today, issue 31] Fri, 15 APR 2022
Bacterial infection and antibiotic use
【ICCV 2019】MAP-VAE:Multi-Angle Point Cloud-VAE: Unsupervised Feature Learning for 3D Point Clouds..
顺序表的基本操作
MATLAB lit plusieurs diagrammes fig et les combine en un seul diagramme (sous forme de sous - Diagramme)
Alibaba cloud IOT transfer to PostgreSQL database scheme
Unipolar NRZ code, bipolar NRZ code, 2ASK, 2FSK, 2PSK, 2DPSK and MATLAB simulation
Mysql出现2013 Lost connection to MySQL server during query
STM32上μC/Shell移植与应用
Thought of reducing Governance -- detailed summary of binary search
UDP protocol and TCP protocol
Single chip microcomputer serial port data processing (2) -- ucosiii + cyclic queue receiving data
Single chip microcomputer serial port data processing (1) -- serial port interrupt sending data
[AI vision · quick review of today's sound acoustic papers, issue 3] wed, 20 APR 2022
PHP export excel table
STM32 MCU ADC rule group multi-channel conversion DMA mode
【论文阅读】【3d目标检测】Improving 3D Object Detection with Channel-wise Transformer
C语言常用字符串处理函数
Matlab reads multiple fig graphs and then combines them into one graph (in the form of sub graph)