正如我们所知,从以下命令中,输出less --help | grep -i examine
被重定向到文件检查较少的文件, linux 是否使用类似于BODMAS rule
数学中的通用运算顺序?
less --help | grep -i examine > examine-files-in-less
答案1
管道中涉及的所有命令(例如问题中的命令)(几乎)同时启动。
这意味着管道中的命令例如
find . ...some other arguments... | sort | uniq -c | sort -nr
都是并行运行的。
然而,由于一个命令的输出是下一个命令的输入,并且由于命令等待输入被传送和输出被消耗,因此数据同步管道中的命令。
例如,在上面的管道中,最后一个将运行,但在第一个管道消耗完sort
所有输出之前不会做太多事情(排序操作要求find
sort
全部已读取可用数据)。
因此,数据强制从左到右排序加工由管道完成。
在其他复合命令中,例如列表
ls -l; cat somefile
这与以下相同
ls -l
cat somefile
有严格的从左到右的顺序。在完成cat
之前不会开始。ls
在复合命令中,例如
test -f filename || echo 'no such file'
还有严格的从左到右的顺序,在这里,如果返回零退出状态,echo
则不会执行。test
另请参见,例如,“布尔测试 && 和 || 的问题在bash中“ 和 ”逻辑运算符与分号的优先级”。