当前位置:网站首页>第四章 --- 了解标准设备文件、过滤器和管道
第四章 --- 了解标准设备文件、过滤器和管道
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
边栏推荐
- Iron and intestinal flora
- OpenCV----YOLACT实例分割模型推理
- 【ICCV 2019】MAP-VAE:Multi-Angle Point Cloud-VAE: Unsupervised Feature Learning for 3D Point Clouds..
- Xiaomi, which has set the highest sales record of domestic mobile phones in overseas markets, paid renewed attention to the domestic market
- thymeleaf th:value 为null时报错问题
- mysql ,binlog 日志查询
- Single chip microcomputer serial port data processing (2) -- ucosiii + cyclic queue receiving data
- [AI vision · quick review of today's sound acoustic papers issue 1] Thu, 14 APR 2022
- PHP export excel table
- VHDL语言实现32位二进制数转BCD码
猜你喜欢
![[AI vision · quick review of robot papers today, issue 29] Mon, 14 Feb 2022](/img/a3/88b20f3e1be702f580169400e417f4.png)
[AI vision · quick review of robot papers today, issue 29] Mon, 14 Feb 2022
![[echart] démarrer avec echart](/img/40/e057f4ac07754fe6f3500f3dc72293.jpg)
[echart] démarrer avec echart

C语言: 指针的进阶

【ICCV 2019】MAP-VAE:Multi-Angle Point Cloud-VAE: Unsupervised Feature Learning for 3D Point Clouds..

Network principle | connection management mechanism in TCP / IP important protocol and core mechanism
![[BIM introduction practice] Revit building wall: detailed picture and text explanation of structure, envelope and lamination](/img/cb/86b5898609800a80592fceb782503f.png)
[BIM introduction practice] Revit building wall: detailed picture and text explanation of structure, envelope and lamination
![[latex] formula group](/img/34/ba927517d902a505077388d9b875d1.png)
[latex] formula group

【BIM入门实战】Revit中的墙体层次以及常见问题解答

Unipolar NRZ code, bipolar NRZ code, 2ASK, 2FSK, 2PSK, 2DPSK and MATLAB simulation

Why recommend you to study embedded
随机推荐
【测绘程序设计】坐标反算神器V1.0(附C/C#/VB源程序)
Understand the gut organ axis, good gut and good health
VSCode配置之Matlab极简配置
Basic introduction to spot gold
Single chip microcomputer serial port data processing (2) -- ucosiii + cyclic queue receiving data
[AI vision · quick review of today's sound acoustic papers issue 1] Thu, 14 APR 2022
Common string processing functions in C language
/etc/bash_completion.d目录作用(用户登录立刻执行该目录下脚本)
MySQL 2013 lost connection to MySQL server during query
【Echart】echart 入门
Introduction to Cortex-M3 register set, assembly language and C language interface
Set classic topics
Stm32f4 MCU ADC sampling and FFT of ARM-DSP Library
KVM error: Failed to connect socket to ‘/var/run/libvirt/libvirt-sock‘
一个函数秒杀2Sum 3Sum 4Sum问题
Matlab minimalist configuration of vscode configuration
基于PHP的代步工具购物商城
【李宏毅2022 机器学习春】hw6_GAN(不懂..)
Alibaba cloud IOT transfer to PostgreSQL database scheme
【NeurIPS 2019】Self-Supervised Deep Learning on Point Clouds by Reconstructing Space