cat 和管道 vs. 重定向

rea*_*ste 7 pipe io-redirection cat

这两个命令有什么区别?

cat /proc/uptime | awk '{print $1}'

< /proc/uptime awk '{print $1}'

具体来说,第二个命令是如何工作的?重定向操作符不是<必须伴随命令吗?像这样重定向文件的内容是什么意思?

Jos*_*ica 6

在一般情况下,foo < bar< bar foo是在bash脚本等价的。任何时间< filename被 shell 处理,这意味着它关联的命令的标准输入将来自该文件。这不涉及额外的命令或进程;外壳自己做。

运行cat filename读取指定文件的内容并将它们写入标准输出。|在两个命令之间意味着将左命令的标准输出连接到右命令的标准输入。

因此,您的两个命令都具有将内容发送/proc/uptime到 awk的相同效果,但第一种方法会启动一个额外的cat进程来执行此操作。

  • (警告:snark):另见 [UUOC](http://porkmail.org/era/unix/award.html) (2认同)