图 1 通过图形说明命令的 stdout 重定向到后续命令的 stdin 的次序。
图 1. 管道示例
用 >、>>、< 和 << 执行数据重定向
通过命令行界面(CLI)执行命令的另一个重要方面是,能够把各种输出写到一个设备,或者把来自另一个设备的输入读取到命令中。要想写一个命令的输出,需要在执行的命令后面加上大于号(> 或 >>)和所需的目标文件名或设备。如果目标文件不存在,而且您对目标目录有写权限,那么 > 和 >> 会创建这个文件并根据您的 umask 设置权限,然后把命令的输出写到刚创建的文件中。但是,如果这个文件存在,> 会尝试打开文件并覆盖整个内容。如果希望在这个文件中追加内容,那么只需使用 >>。可以认为它的作用是把左边命令的输出数据流移动到右边的目标文件中(即 <cmd> -> <output> -> <file>)。
下面的示例执行 “管道 一节中的 ps –ef 示例,并把输出重定向到文件 ps_out:
# ps –ef | grep –E "rpc|ksh" > ps_out
下面的代码执行前面扩展的管道示例并把输出重定向到同一个文件(ps_out),但是追加到当前数据后面:
# ps –ef | grep –E "rpc|ksh" | grep -vE "grep|rpc.ttdbserver" |
awk -v _MAX_PID=200000 '{if ($2 > _MAX_PID) {print "PID for
process",$8,"is greater than", _MAX_PID}}' >> ps_out
标签: