Sie können man grepdie Referenzhandbuchseite für den Befehl lesen oder für weitere Informationen zu bestimmten Befehlen (inkl. Grep) info grep.... dh. Ihr System verfügt über eine Dokumentation, die oft sehr praktisch ist.
Guiverc
12
grep -v "grep"wird oft verwendet, um grep selbst herauszufiltern, während Prozesse aufgelistet werden, und das beinhaltet normalerweise 3 Pipelines, obwohl es natürlich bessere Methoden gibt, pgrepdie viel weniger "Klempnerarbeiten" ermöglichen. Siehe unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy
13
Das tut es. Ich rufe mein Rootkit an grep.
Joshua
Wird normalerweise in einem nicht sicherheitsrelevanten Kontext verwendet, z. B. ps aux | grep fubar | grep -v grepwo fubarist etwas, das ich entwickle, das nicht mehr reagiert und dessen ID ich finden möchte, damit ich es töten kann. Angenommen, es gibt zwei davon, killallist dies nicht angemessen.
Nigel222
Antworten:
69
grep -v "grep"Übernimmt die Eingabe zeilenweise und gibt nur die Zeilen aus, in denen grepsie nicht vorkommen. Ohne -vwäre es Ausgabe nur die Zeilen , in denen grepnicht erscheinen. Siehe man grepfür weitere Einzelheiten.
Für das grepDienstprogramm selbst ist es unwichtig, dass das grepals Argument übergebene Muster mit dem Namen identisch ist. In den meisten Fällen grep -v grepist dies jedoch kein Zufall.
grep -v grep(oder grep -v 'grep'oder grep -v "grep") erscheint oft auf der rechten Seite einer Pipe, deren linke Seite ein psBefehl ist. Das ist wahrscheinlich, wo Sie es gesehen haben. Ich suche beispielsweise nach laufenden Programmen, deren Namen, Pfade oder Befehlszeilenargumente darauf hindeuten, dass sie mit Xfce zusammenhängen:
ek@Io:~$ ps x | grep xfce
2955?Ssl0:10 xfce4-power-manager
2958? S 0:00/usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1 S+0:00 grep --color=auto xfce
Mein grepBefehl wurde in der Ausgabe angezeigt, aber es ist nicht das, wonach ich suche. Ich suche nach Informationen zu Prozessen, die bereits ausgeführt wurden, als ich untersuchte, was ausgeführt wurde, und nicht zu dem Prozess, der nur ausgeführt wird, weil ich versucht habe, zu überprüfen, was ausgeführt wird.
Ein üblicher Weg, um diese Ablenkung zu beseitigen, ist das Hinzufügen einer weiteren Pipe zu grep -v grep:
ek@Io:~$ ps x | grep xfce | grep -v grep
2955?Ssl0:10 xfce4-power-manager
2958? S 0:00/usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
grepwithout -Fbehandelt sein Muster eher als regulären Ausdruck als als festen String . Ein weiterer Ansatz besteht darin, einen regulären Ausdruck zu schreiben, der genau übereinstimmt, xfceaber anders geschrieben ist. Beispielsweise:
ek@Io:~$ ps x | grep '[x]fce'2955?Ssl0:10 xfce4-power-manager
2958? S 0:00/usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
Dies funktioniert, da [x]es sich um eine Zeichenklasse handelt , die genau dem Buchstaben entspricht x.
Ein Nachteil dieser populären Methoden ist, dass sie Zeilen herausfiltern, die enthalten, grepauch wenn sie nicht der grepBefehl sind, den Sie gerade selbst ausgeführt haben. Es handelt sich möglicherweise nicht einmal um grepBefehle, sondern nur um Befehle, deren Namen, Pfade oder Befehlszeilenargumente enthaltengrep . Also, wie Sergiy Kolodyazhnyy betont hat, ist oft keiner dieser Wege (oder irgendein anderer Ansatz, der das Leiten der Ausgabe beinhaltet ps) wirklich ideal und, wie Nic Hartley erwähnte , andere Wege werden oft verwendet pgrep. Beispielsweise:
Es kann auch erwähnenswert sein, pgrepfür eine andere Alternative zups | grep
Fund Monica Lawsuit
8
grep --helpsagt uns was -vflag macht:
-v,--invert-match select non-matching lines
Sie können -vflag zum Drucken verwenden , um die Übereinstimmung umzukehren. Das heißt, es werden nur die Zeilen gefunden, die das angegebene Wort nicht enthalten. Zum Beispiel alle Zeilen drucken, die die Wortleiste nicht enthalten:
man grep
die Referenzhandbuchseite für den Befehl lesen oder für weitere Informationen zu bestimmten Befehlen (inkl. Grep)info grep
.... dh. Ihr System verfügt über eine Dokumentation, die oft sehr praktisch ist.grep -v "grep"
wird oft verwendet, um grep selbst herauszufiltern, während Prozesse aufgelistet werden, und das beinhaltet normalerweise 3 Pipelines, obwohl es natürlich bessere Methoden gibt,pgrep
die viel weniger "Klempnerarbeiten" ermöglichen. Siehe unix.stackexchange.com/q/74185/85039grep
.ps aux | grep fubar | grep -v grep
wofubar
ist etwas, das ich entwickle, das nicht mehr reagiert und dessen ID ich finden möchte, damit ich es töten kann. Angenommen, es gibt zwei davon,killall
ist dies nicht angemessen.Antworten:
grep -v "grep"
Übernimmt die Eingabe zeilenweise und gibt nur die Zeilen aus, in denengrep
sie nicht vorkommen. Ohne-v
wäre es Ausgabe nur die Zeilen , in denengrep
nicht erscheinen. Sieheman grep
für weitere Einzelheiten.Für das
grep
Dienstprogramm selbst ist es unwichtig, dass dasgrep
als Argument übergebene Muster mit dem Namen identisch ist. In den meisten Fällengrep -v grep
ist dies jedoch kein Zufall.grep -v grep
(odergrep -v 'grep'
odergrep -v "grep"
) erscheint oft auf der rechten Seite einer Pipe, deren linke Seite einps
Befehl ist. Das ist wahrscheinlich, wo Sie es gesehen haben. Ich suche beispielsweise nach laufenden Programmen, deren Namen, Pfade oder Befehlszeilenargumente darauf hindeuten, dass sie mit Xfce zusammenhängen:Mein
grep
Befehl wurde in der Ausgabe angezeigt, aber es ist nicht das, wonach ich suche. Ich suche nach Informationen zu Prozessen, die bereits ausgeführt wurden, als ich untersuchte, was ausgeführt wurde, und nicht zu dem Prozess, der nur ausgeführt wird, weil ich versucht habe, zu überprüfen, was ausgeführt wird.Ein üblicher Weg, um diese Ablenkung zu beseitigen, ist das Hinzufügen einer weiteren Pipe zu
grep -v grep
:grep
without-F
behandelt sein Muster eher als regulären Ausdruck als als festen String . Ein weiterer Ansatz besteht darin, einen regulären Ausdruck zu schreiben, der genau übereinstimmt,xfce
aber anders geschrieben ist. Beispielsweise:Dies funktioniert, da
[x]
es sich um eine Zeichenklasse handelt , die genau dem Buchstaben entsprichtx
.Ein Nachteil dieser populären Methoden ist, dass sie Zeilen herausfiltern, die enthalten,
grep
auch wenn sie nicht dergrep
Befehl sind, den Sie gerade selbst ausgeführt haben. Es handelt sich möglicherweise nicht einmal umgrep
Befehle, sondern nur um Befehle, deren Namen, Pfade oder Befehlszeilenargumente enthaltengrep
. Also, wie Sergiy Kolodyazhnyy betont hat, ist oft keiner dieser Wege (oder irgendein anderer Ansatz, der das Leiten der Ausgabe beinhaltetps
) wirklich ideal und, wie Nic Hartley erwähnte , andere Wege werden oft verwendetpgrep
. Beispielsweise:-a
Zeigt die vollständige Befehlszeile an. Lassen Sie es weg, um nur die Prozess-ID-Nummer anzuzeigen.-f
Sucht in der vollständigen Befehlszeile. Lassen Sie es aus, um nur die Namen zu suchen.quelle
pgrep
für eine andere Alternative zups | grep
grep --help
sagt uns was-v
flag macht:Sie können
-v
flag zum Drucken verwenden , um die Übereinstimmung umzukehren. Das heißt, es werden nur die Zeilen gefunden, die das angegebene Wort nicht enthalten. Zum Beispiel alle Zeilen drucken, die die Wortleiste nicht enthalten:( lesen Sie mehr ... )
quelle