如何在单个 grep 命令中同时使用 AND 和 NOT

Nul*_*ter 2 command-line bash grep 14.04

我正在创建一个 shell 脚本,其中,我需要过滤除自己的 grep 进程之外的进程。如果我使用:

echo "step1"
psout=`ps -aux | grep 'deluged'| grep '58846'`
echo "step2"
echo $psout       
...
Run Code Online (Sandbox Code Playgroud)

然后停止脚本意味着step2不显示!和 $psout,输出空白。我不知道为什么。

如果我尝试使用 AND 和除了color

$ ps -aux | grep -e 'deluged' -e '58846' -v "color"
grep: color: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用钥匙串:

ps -aux | grep -e "[d]eluged"."58846"

Blank OUTPUT
Run Code Online (Sandbox Code Playgroud)

简而言之,如何使用 AND 和除了自己的 grep 进程之外的单个 grep 查找进程?

Ser*_*nyy 6

您在评论中说您想知道进程是否存在。pgrep -f 'deluge'为此使用。或者替代地pgrep -f 'deluge.*58846'

pgrep 专门设计用于在进程存在时为您提供 pid,并避免解析 grep 和 ps 的问题。如果进程不存在,那么您将有空白输出

您还可以使用sudo netstat -tulpan并使用 grep 查看您的端口号是否在开放端口中