重定向与管道

Posted WY_记录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向与管道相关的知识,希望对你有一定的参考价值。

1.Bash 实际上使用三种标准输入输出流:

 标准输出流(stdout),显示来自命令的输出,文件描述符是 1。
 标准错误输出流(stderr),显示来自命令的错误输出,文件描述符
是 2。
 标准输入流(stdin),向命令提供输入,文件描述符是 0

先有一个输入:输入可以从键盘或者其他输入设备,通过 stdin 交给命
令。命令执行完成:成功了,会把成功结果通过 stdout 输出到输出设备上:;
如果命令执行有错误:会把错误结果通过 stderr 也输出到屏幕上面。一般情况
下,我们可以将 stdout 和 stderr 视为终端屏幕或者终端窗口,而将 stdin 视为
终端键盘。

2.重定向

输出重定向指的就是:
将某个程序默认指向 stdout 或者 stderr 的输出文本流转而指向另一个文件,也
即程序输出到某个指定文件中而不是输出到终端屏幕或者终端窗口中了

对输出进行重定向有两种方法:

n> ,表示将来自文件描述符 n 的输出重定向到文件。必须对这个文件有写权限。如果文件不存在,就创建它。如果它存在,将覆盖原有文件内容;
 n>>,也表示将来自文件描述符 n 的输出重定向到文件。同样,必须对这个文件有写权限。如果文件不存在,就创建它。如果它存在,输出就附加到现有文件后

&> 或 &>> 将标准输出和标准错误重定向到同一个位置,对文件描述符 n 进行重定向,然后使用 m>&n 或 m>>&n 将文件描述符 m 重定向到同一个位置

完全忽略标准输出或标准错误。为此,可以把适当的流重定向到 /dev/null 中, /dev/null ,可以说成是黑洞装置。为空,即不保存。

输出重定向则指的是:

让某个程序从指定文件中获取输入而非从 stdin 中(常常指键盘)获取输入了

使用 < 操作符将 stdin 重定向为来自文件

 tr \'准备要替换的字符\' \'要替换成的字符\' :从标准输入中替换特定字符,并将结果写到标准输出

sort -k [关键字段序号] [要排序的文件]: 对文本文件内容按照规定字段进行排序

<< ,here-document 的概念,这是输入重定向的另一种形式。

将一对相同的定界符(例如eof)之间的输入内容作为一个文件输入,结尾的界定符要定格写,前后不能有空格

3.管道

管道就是一种特殊的重定向,也就是对一个命令的输出进行管道连接(即重定向),用作下一个命令的输入
两个命令之间使用 |(管道)操作符就是将第一个命令的 stdout 定向到第二个命令的 stdin

 管道命令只处理前一个命令正确输出,不处理错误输出;
 管道命令右边命令,必须能够接收标准输入流命令才行。

常用来作为接收数据管道命令有:grep,sed, awk, cut, head, tail,top, less, more,wc, join, sort, split 等等,都是些文本处理命令

grep [查找的关键字] [目标文件] 正则表达式  文本搜索命令

wc -l 统计行数。-c 统计字节数。-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。-L 打印最长行的长度。-m 统计字符数。这个标志不能与 -c 标志一起使用。

cut -c数字 切割文本,c代表字符,数字是切割的字符列序号 ,数字之间用逗号隔开

-f数字切割的字段序列号  -d“指定分隔符”

道的另外一种形式称为命令替换。实现方法是将您希望使用其结果的命令封闭在反单引号(`[1])中或者封闭在 $( 和 ) 之间

4.

1、 模块性原则:写简单的,通过干净的接口可被连接的部件;
2、 清楚原则:清楚要比小聪明好。
3、 合并原则:设计能被其它程序连接的程序。
4、 分离原则:从机制分离从策略,从实现分离出接口。
5、 简单原则:设计要简单;只有当你需要的时候,增加复杂性;
6、 节俭原则:只有当被证实是清晰,其它什么也不做的时候,才写大的程序
7、 透明原则:为使检查和调试明显更容易而设计
8、 健壮性原则:健壮性是透明和简单的追随者
9、 表现原则:把知识整理成资料,于是程序逻辑能变得易理解和精力充沛的。
10、 最小意外原则:在接口设计中,总是做最小意外事情
11、 沉默原则:当一个程序令人吃惊什么也不说的时候,他应该就是什么也不说
12、 修补补救:当你必须失败的时候,尽可能快的吵闹地失败
13、 经济原则:程序员的时间是宝贵的;优先机器时间节约它。
14、 产生原则:避免手工堆砌;当你可能的时候,编写可以写程序的程序;
15、 优化原则:在雕琢之前先有原型;在你优化它之前,先让他可以运行;
16、 差异原则:怀疑所有声称的“唯一真理“
17、 可扩展原则:为将来做设计,因为它可能比你认为来的要快

 

 



 

以上是关于重定向与管道的主要内容,如果未能解决你的问题,请参考以下文章

Linux 重定向与管道符

重定向与管道

Linux管道符重定向与环境变量

Linux管道符和重定向与环境变量

管道符重定向与环境变量

2023.6.2 Linux重定向与管道