本篇文章内容需要读者知道 shell 的一些语法和作用,知道 shell 的用途,和一些基本的用法。
这里可以查看原文:Pipelines in Shell
学习 shell 脚本必须要理解 pipeline 的概念,知道 command 的输入(input)和输出(output)的概念。只有掌握了 pipeline 的机制我们才能更好的写好 shell 脚本,本章内容详细介绍 pipeline。
shell 中的 command 可以接受一些输入然后产生一些输出,类似与数学中的函数表达式 y = f(x)
,输入参数 x
,得到结果 y
,command 就可以看作是一个函数方程。
标准输入、输出和错误
每一个程序都会接触到三个比较特殊的文件(linux 中所有东西都是文件):stdin
、stdout
和 stderr
stdin
:standard input 的缩写,意思是标准输入,大部分程序从这里读取输入,用数字0
表示stdout
:standard output 的缩写,意思是标准输出,大部分程序将输出信息写入到这个文件里,用数字1
表示stderr
:standard error 的缩写,意思是标准错误,大部分程序出错了需要将错误信息写入这个文件,用数字2
表示
上面用了
大部分
这个修饰词,意思并不是所有的程序都会按照上面的规范去读取和输出信息,因为任何程序都可以自由选择从哪里读取输入,将输出信息写入哪里。
这三个特殊的文件存储在 dev/
(dev 表示 device)文件夹下:
$ ls -al /dev