Wenn ich nach einem Prozess suche, der nicht existiert, zB
$ ps aux | grep fnord
wayne 15745 0.0 0.0 13580 928 pts/6 S+ 03:58 0:00 grep fnord
Grep ist mir offensichtlich egal, das ist genauso sinnvoll wie die Suche nach dem ps
Prozess!
Wie kann ich verhindern, dass grep in den Ergebnissen angezeigt wird?
Antwort1
Es stellt sich heraus, dass es eine Lösung gibt inSchlüsselanhänger.
$ ps aux | grep "[f]nord"
Indem Sie Klammern um den Buchstaben und Anführungszeichen um die Zeichenfolge setzen, suchen Sie nach dem regulären Ausdruck, der lautet: „Suche das Zeichen ‚f‘ gefolgt von ‚nord‘.“
Da Sie jedoch die Klammern in das Muster eingefügt haben, folgt auf „f“ jetzt „]“, sodass es grep
nicht in der Ergebnisliste angezeigt wird. Cool!
Antwort2
Eine weitere Option, die ich verwende (insbesondere um zu sehen, ob ein Prozess ausgeführt wird), ist der pgrep
Befehl. Dieser sucht nach einem übereinstimmenden Prozess, listet aber keine Grep-Zeile für die Suche auf. Ich mag das, weil es eine schnelle Suchmethode ist, ohne Regex- oder Escape-Befehle.
pgrep fnord
Um sowohl die Prozess-ID als auch den Namen des übereinstimmenden Prozesses auszudrucken, verwenden Sie (dankepfeffer)
pgrep -l fnord
Antwort3
Die ideale Lösung ist die von BriGuy vorgestellte
pgrep fnord
Wenn Sie das aber nicht möchten, können Sie einfach alle Zeilen ausschließen, die mitgrepmit:
ps aux | grep -v grep | grep "fnord"
Antwort4
In zsh, grep fnord =(ps aux)
.
Die Idee ist, zuerst auszuführen ps aux
, das Ergebnis in eine Datei zu schreiben und es dann grep
auf dieser Datei zu verwenden. Allerdings haben wir keine Datei, da wir die „Prozesssubstitution“ von zsh verwenden.
Versuchen Sie zur Veranschaulichung
ps aux > ps.txt
grep fnord ps.txt
rm ps.txt
Das Ergebnis sollte das gleiche sein.
Allgemeiner Kommentarzu einigen der anderen Antworten. Manche sind viel zu kompliziert und/oder zu lang zum Eintippen. Es geht nicht nur darum, richtig zu sein, es sollte auch benutzbar sein. Aber das bedeutet nicht, dass einige dieser Lösungen schlecht sind; sie müssen nur in eine Mini-Benutzeroberfläche eingebettet werden, um sie benutzbar zu machen.