什么是 “|”?
|
其实是linux shell 中的一个命令:管道命令(pipe)
管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output
的信息,将其递给下一个命令,作为标准的输入 standard input
。但是对于 stdandard error
信息没有直接处理能力。
-
相关补充:
- linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。
- linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2。以后打开文件,新增文件绑定描述符,并可以依次增加。一条shell命令执行,都会继承父进程的文件描述符。因此,所有运行的shell命令,都会有默认3个文件描述符。
-
如何查看命令参数
file
我们通过file命令可以查看这是个什么东西(文件类型)!$
代表了上一条命信令的参数。file !$
综合使用可以查看上一条命令参数
对于任何一条linux 命令执行,它会是这样一个过程:
-
先有一个输入:输入可以从键盘,也可以从文件得到standard input
-
命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕
-
命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕
如何使用?
command1正确输出,作为command2的输入 然后comand2的输出作为,comand3的输入 ,comand3输出就会直接显示在屏幕上面了。
相当于一个为三个command建立一个通道,将其输入和输出连接了起来。
实例分析:
- 实例一:查看文本文件内容有关
echo
的句子
我们使用cat test.sh | grep -n 'echo'
试试:
bingo! 将cat命令查找到的信息(输出)作为grep的查找范围(输入)。 - 实例二:实现一个小程序
testwc
我们使用cat test.txt | testwc
试试:
利用cat命令查看文件内容并作为testwc
(这个是之前实现的简单wc功能的小程序)的输入。