當我搜尋一些不存在的進程時,例如
$ 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 中才能使用。