首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux如何在执行组合重定向的命令中确定操作顺序?

linux如何在执行组合重定向的命令中确定操作顺序?
EN

Unix & Linux用户
提问于 2018-02-23 09:04:34
回答 1查看 631关注 0票数 0

我们知道,通过下面的命令,less --help | grep -i examine的输出被重定向到文件检查文件中,是否有类似于BODMAS rule在数学上使用的通用操作顺序?

代码语言:javascript
复制
less --help | grep -i examine > examine-files-in-less
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-23 09:56:51

在管道中涉及的所有命令,例如问题中的命令,都同时启动(差不多)。

这意味着管道中的命令,如

代码语言:javascript
复制
find . ...some other arguments... | sort | uniq -c | sort -nr

都在并行运行。

但是,由于一个命令的输出是下一个命令的输入,而且由于命令等待输入的传递和输出的消耗,所以数据同步了管道中的命令。

例如,在上面的管道中,最后一个sort将运行,但在第一个sort使用完find的所有输出(排序操作要求读取所有可用数据)之前,不会执行太多操作。

因此,数据在管道所做的处理中执行从左到右的排序.

在其他复合命令中,例如列表

代码语言:javascript
复制
ls -l; cat somefile

这和

代码语言:javascript
复制
ls -l
cat somefile

有严格的左右顺序。catls完成之前不会启动。

在复合命令中,如

代码语言:javascript
复制
test -f filename || echo 'no such file'

还有一个严格的从左到右的排序,在这里,如果echo返回零退出状态,test将不会执行。

例如,请参见"关于布尔测试的问题&和bash中的“和"逻辑运算符的优先级与分号”。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/426050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档