输出重定向
输出重定向比输入重定向更常用,很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,那么将输出重定向到一个文件中,然后再用文本编辑器打开这个文件,就可以查看输出信息;如果想保存一个命令的输出,也可以使用这种方法。还有,输出重定向可以用于把一个命令的输出当作另一个命令的输入
。
覆盖与追加
为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容,shell提供了输出重定向的一种追加手段。输出追加重定向与输出重定向的功能非常相似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最后,而该文件原有内容不被破坏。
错误输出重定向
系统错误与标准输出使用的I/O管道不同,虽然他们都默认显示到屏幕上,但系统错误使用stderr通道而标准输出使用stdout通道。
我们在这里提到了一个设备文件/dev/null,它是我们常说的黑洞设备,无论你发送何种大小的文件它都忽略并删除。
当我们需要回显错误输出时可以采取如下方式:
[kevinz@stationXX kevinz] $ find / -name passwd 2 >>results >&1
其中&1就是指标准输出!
管道
将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起,另一种是Linux所提供的管道功能。这种方法比前一种方法更好。
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。
管道前过滤器的输出与管道后过滤器的输入数据类型需匹配,如果有不匹配的数据,后过滤器就会把不匹配的数据丢弃。例如:
[kevinz@stationXX kevinz] $ls -l
(屏幕回显是有颜色的)
[kevinz@stationXX kevinz] $ls -l |
less
(屏幕回显是没有颜色的)
重定向、管道的常用范例
•ls -l | more
-分屏显示当前目录下的文件
•cat < filea > fileb
-拷贝filea到fileb
•cat file.* > file
-将数个小文件合并成一个文件