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

时间:2015-03-31 20:35:25

标签: 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 | grep rman 

订单是可选的吗?
grep如何知道源是在左边而不在右边?或者我在这里遗漏了一些东西。

2 个答案:

答案 0 :(得分:0)

使用Unix管道时,大多数系统命令将从前一个命令(管道左侧)输出,然后将输出传递到管道右侧的命令。

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

因此

grep doberman /file/about/dogs

相同
cat /file/about/dogs | grep doberman

有关更多信息,请参阅http://linuxcommand.org/lts0060.php上的管道。

答案 1 :(得分:0)

从Kyle关于管道的回答中可以看出,大多数shell命令从stdin读取输入并将其输出写入stdout。现在,许多命令还允许您指定要读取或写入的文件名,或者允许您将文件重定向到stdin作为输入,并将命令stdout重定向到文件。但无论您如何指定要读取的内容,命令都会从其stdin输入并在stdout上提供输出(stderr上的错误)。 stdinstdoutstderr分别是文件描述符0, 1 & 2的名称。

这个基本功能允许命令一起piped。其中pipe(由|字符表示)不执行任何操作,从第一个命令(左侧)获取stdout并将其指向下一个命令stdin。因此,是的,订单很重要。

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

希望这些答案能让您更好地了解正在发生的事情。