如何防止“grep”出現在 ps 結果中?

如何防止“grep”出現在 ps 結果中?

當我搜尋一些不存在的進程時,例如

$ ps aux | grep fnord                          
wayne    15745  0.0  0.0  13580   928 pts/6    S+   03:58   0:00 grep fnord

顯然我不關心 grep - 這與搜尋進程一樣有意義ps

如何防止 grep 出現在結果中?

答案1

事實證明,找到了解決方案鑰匙鏈

$ ps aux | grep "[f]nord"

在字母周圍加上括號,在字串周圍加上引號,您可以搜尋正規表示式,即「尋找字元 'f' 後面跟著 'nord'」。

但由於您將括號放在模式“f”中,現在後面跟著“]”,因此grep不會顯示在結果清單中。尼托!

答案2

我使用的另一個選項(特別是只是為了查看進程是否正在運行)是命令pgrep 。這將搜尋匹配的進程,但不會列出用於搜尋的 grep 行。我喜歡它,因為它是一種快速的搜尋方式,無需重新調整或轉義任何內容。

pgrep fnord

此外,若要列印正在配對的進程 ID 和進程名稱,請使用(感謝菲默爾

pgrep -l fnord

答案3

BriGuy 提出的解決方案是理想的解決方案

pgrep fnord 

但如果您不想這樣做,您可以排除所有與grep和:

ps aux | grep -v grep | grep "fnord"

答案4

在 zsh 中,grep fnord =(ps aux).

這個想法是,首先運行ps aux,將結果放入文件中,然後grep在該文件上使用。只是,我們沒有文件,因為我們使用 zsh 的「進程替換」。

為了說明這一點,試試

ps aux > ps.txt
grep fnord ps.txt
rm ps.txt

結果應該是一樣的。

一般評論關於其他一些答案。有些太複雜和/或打字很長。這不僅是正確的問題,而且還應該可用。但這並不意味著其中一些解決方案不好;而是意味著其中一些解決方案不好。只是,它們必須封裝在迷你 UI 中才能使用。

相關內容