我正在尝试grep
针对源自 /Applications/ 目录的进程(以杀死它们),但我的grep
命令也不断捕获一些错误的进程。我在这里做错了什么?
$ ps -ef | grep -e '/Applications/' | grep -v grep | awk '{print $8}'
/Library/Application I DON'T WANT THIS
/Library/Application I DON'T WANT THIS
/Applications/Firefox.app/Contents/MacOS/firefox
/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
/Applications/Notes.app/Contents/MacOS/Notes
答案1
使用锚点^
(插入符号)来表示行/字段的开头并更改命令顺序:
ps -ef | grep -v grep | awk '{print $8}' | grep "^/Applications"
这样,grep 将最后运行,并且只返回以下行:开始和/Applications
。
这也很有帮助。
答案2
如果您正在为节省 CPU 时钟周期而烦恼:
ps -ef | awk '$8~"^/Applications/"{print $8}'
答案3
尝试在您的模式中包含空格:
... grep -e ' /Applications/' ...
此外,pkill
(长期以来一直是 Linux 中的标准产品)现在包含在 OS X Mountain Lion (10.8) 及更高版本中。看http://osxdaily.com/2012/10/18/kill-process-wildcards-pkill-mac-os-x/