Grep命令Linux源字符串和目标字符串的排序

Grep命令Linux源字符串和目标字符串的排序,linux,shell,grep,Linux,Shell,Grep,Grep命令语法如下: grep "literal_string" filename --> search from string in filename. 所以我假设的顺序是这样的 -- keyword(grep) --> string to be searched --> filename/source string and command is interpreted from left to right. 我的问题是这样的命令是如何处理的: ps -ef | gre

Grep命令语法如下:

grep "literal_string" filename --> search from string in filename.
所以我假设的顺序是这样的

-- keyword(grep) --> string to be searched --> filename/source string and command is interpreted from left to right.
我的问题是这样的命令是如何处理的:

ps -ef | grep rman 
订单是可选的吗?
grep如何知道源在左边而不是右边?或者我在这里遗漏了什么。

当使用Unix管道时,大多数系统命令会将上一个命令的输出放到管道左侧,然后将输出传递到管道右侧的命令

使用带或不带管道的grep时,顺序很重要

因此

cat /file/about/dogs | grep doberman

有关更多信息,请参见上的管道。

因为Kyle关于管道的回答的下一步是,大多数shell命令从stdin读取其输入,并将其输出写入stdout。现在,许多命令还允许您指定要读取或写入的文件名,或者允许您将文件重定向到stdin作为输入,并将命令stdout重定向到文件。但不管您如何指定要读取的内容,该命令都会处理来自其stdin的输入,并在stderr上提供关于stdout错误的输出。stdin、stdout和stderr分别是文件描述符0、1和2的名称

此基本功能允许命令通过管道传输到一起。其中,由|字符表示的管道不再执行从左侧第一个命令获取stdout并将其指向下一个命令stdin的操作。因此,是的,顺序很重要

要记住的另一点是,每个管道化进程都在其自己的子shell中运行。换句话说,每个|将生成另一个shell来运行以下命令。如果您依赖于一个流程的环境进行下一个流程,那么这会产生影响

希望这些答案能让你对正在发生的事情有一个更好的感觉

cat /file/about/dogs | grep doberman