Dieser Artikel stellt einige Tools vor, insbesondere grep
, ein Linux®-Befehlszeilentool, mit dem Sie Verzeichnisse oder Dateien durchsuchen können, die mit angegebenen regulären Ausdrücken übereinstimmen.
Was ist grep
?
Offizielle Antwort:
grep
durchsucht die benannten Eingabedateien (oder die Standardeingabe, wenn Sie keine Datei angeben oder einen einzelnen Bindestrich verwenden (- ) als Dateiname) für Zeilen, die eine Übereinstimmung mit dem angegebenen Muster enthalten. Standardmäßig grep
druckt die passenden Zeilen.
Nettere Antwort:
Durchsuchen Sie eine Datei, ein Verzeichnis oder eine Ausgabe nach etwas Bestimmtem, ähnlich wie mit Strg + f unter Windows®. Verwenden Sie diese Funktion, um genau das zu erreichen, was Sie brauchen.
Grundlagen
Oft ist der einfachste Weg, um zu zeigen, wie ein Befehl funktioniert, anhand von Beispielen.
Sie können alle Benutzer in /etc/passwd sehen Datei mit dem folgenden Befehl:
# cat /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql❌27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
sher❌1002:1002::/home/sher:/bin/bash
Verwenden von grep
, können Sie diese Liste eingrenzen, um einen einzelnen Benutzer zu finden.
Suchen Sie einen bestimmten Benutzer :
Listen Sie die Benutzer auf, aber filtern Sie die Ausgabe, die nur die Zeile mit sher anzeigt darin.
# cat /etc/passwd | grep 'sher'
sher❌1002:1002::/home/sher:/bin/bash
Oder finden Sie denselben Benutzer mit einem einzigen Befehl:
# grep 'sher' /etc/passw
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
Suchen Sie im folgenden Beispiel alle Benutzer mit Bash-Zugriff:
# grep 'bash' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
Flaggen
Wie die meisten Linux-Befehle ist grep
verwendet Flags, normalerweise einen oder mehrere Buchstaben, denen ein oder mehrere Bindestriche vorangestellt sind, um zusätzliche Funktionen hinzuzufügen.
-v
:Alles anzeigen, was das angegebene Suchmuster nicht enthält:
# grep -v 'nologin' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
-i
:Übereinstimmungen anzeigen, Groß-/Kleinschreibung ignorieren, was nützlich ist, wenn Sie nicht genau wissen, was Sie brauchen:
# grep -i 'SHER' /etc/passwd
sher❌1002:1002::/home/sher:/bin/bash
Nach mehreren Mustern suchen
grep
verwendet das Pipe-Symbol (| ) bedeutet oder So können Sie nach mehr als einer Sache gleichzeitig suchen. Verwenden Sie eine der folgenden Methoden, um nach mehreren Dingen gleichzeitig zu suchen:
\ :Escapezeichen für das nächste Zeichen, eine Pipe (| ), sodass es als oder arbeiten kann :
# grep 'sher\|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
-E :Interpretiert Sonderzeichen wie | als oder :
# grep -E 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
Der egrep
Befehl macht dasselbe:
# egrep 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
Flags kombinieren
Sie können verschiedene Flags in Kombination verwenden, um eine Suche zu verfeinern.
Das folgende Beispiel zeigt alle Benutzer, die nicht sher sind oder Rack ,unabhängig vom Fall des Musters des Dateiinhalts:
# egrep -vi 'SHER|RACK' /etc/passwd
Praxisbeispiele
Die folgenden Abschnitte behandeln andere Verwendungen für grep
und andere nützliche Befehle vorstellen.
Kommentare ignorieren
Unter Linux kommentieren Sie Zeilen aus, indem Sie das Pfund-Symbol (# ) am Zeilenanfang. Auf diese Weise können Sie Ihre eigenen Notizen hinzufügen, und Skripte oder Programme ignorieren die Kommentare und führen diese Zeilen nicht aus.
Um Dateien anzuzeigen, die diese Kommentare ignorieren, verwenden Sie den folgenden Befehl:
# grep -v ^'#' /file
Sie können sogar ein grep
ausführen auf einem anderen grep
Befehl.
Listen Sie beispielsweise eine Datei auf, ignorieren Sie kommentierte Zeilen, und suchen Sie dann nach etwas Bestimmtem:
# grep -v ^'#' /file | grep 'hello'
Suchverlauf
Die meisten Linux-Systeme führen ein Protokoll der ausgeführten Befehle, auf das Sie mit dem Befehl history
zugreifen können . Wenn Sie history
kombinieren mit grep
, können Sie sehr effektiv untersuchen, was bisher auf Ihrem System ausgeführt wurde.
Überprüfen Sie das passwd
Befehle laufen und andere Befehle, die das passwd enthalten Muster:
# history | grep 'passwd'
Befehle suchen, die an einem bestimmten Tag ausgeführt werden:
# history | grep '2021-05-10'
Überprüfen Sie, welche Befehle zu einem bestimmten Zeitpunkt ausgeführt wurden:
# history | grep '2021-05-10 11:00:'
Ports und Root-Login prüfen
Listen Sie den Webverkehr auf, der auf den Ports 80
läuft und 443
:
# netstat -plnt | egrep '80|443'
Sie können ^ verwenden in einem grep
Befehl, um nur die Zeilen anzuzeigen, die mit Ihrem Suchmuster beginnen.
Führen Sie beispielsweise den folgenden Befehl aus, um zu prüfen, ob das System root-Anmeldungen zulässt:
# grep ^'Permit' /etc/ssh/sshd_config
Suchprotokolle mit Head und Tail
Verwenden Sie top
um die ersten zehn Zeilen des Protokolls der Anmeldeversuche anzuzeigen:
# head /var/log/secure
Verwenden Sie tail
um die Zeilen am Ende des Protokolls der Anmeldeversuche anzuzeigen:
# tail /var/log/secure
Verwenden Sie den last
Befehl, um die ersten zehn Zeilen der letzten Anmeldungen anzuzeigen:
# last | head -10
Verwenden Sie das tail -f
um eine Datei in Echtzeit wachsen zu sehen. Sie können beispielsweise die letzten Anmeldeversuche sehen und laufende Versuche beobachten. Wenn jemand versucht, sich anzumelden, können Sie dies mit dem folgenden Befehl sehen:
# tail -f /var/log/secure
Ctrl + C to exit
Andere Tools
Sie können mit Ihren neu erworbenen Fähigkeiten experimentieren, indem Sie die Tools in diesem Abschnitt verwenden.
vim oder nano
vi
, vim
, und nano
sind die gebräuchlichsten Texteditoren in Linux. Sie können sie verwenden, um eine Datei zu bearbeiten, ähnlich wie Notepad in Windows.
Öffnen und erstellen Sie eine neue Datei, test :
# vim /test
Aktionen | Tastenfolge | Erklärung |
---|---|---|
So beginnen Sie mit der Eingabe neuer Inhalte: | i | Bereiten Sie das Einfügen von Text vor |
Beenden ohne Speichern: | Esc :q! | Einfügemodus verlassen und beenden |
Zum Beenden und Speichern: | Esc :wq! | Einfügemodus verlassen, schreiben und beenden |
Echo
echo
ist ein einfacher Befehl, der Linux anweist, das zu wiederholen, was Sie gerade eingegeben haben. Dies ist effektiv zum Testen von grep
Befehle, ohne zuerst eine neue Datei zu erstellen.
Sagen Sie zum Beispiel Hallo Anzeige:
# echo 'hello'
hello
Zeigen Sie Hallo an und suchen Sie nach den mittleren Buchstaben:
# echo 'hello' | grep 'ell'
hello
Sie können sogar echo
verwenden um mehrere Zeilen anzuzeigen, indem Sie -e
verwenden und \n
um neue Zeilen hinzuzufügen.
Zeigen Sie Hallo an und ho in separaten Zeilen:
# echo -e 'hi\nho'
hi
ho
Zeigen Sie Hallo an und ho in separaten Zeilen und suchen Sie nach hi :
# echo -e 'hi\nho' | grep 'hi'
hi
gesendet
Wie grep
, sed
hat viele Verwendungsmöglichkeiten, aber Sie verwenden diesen Befehl hauptsächlich, um nach bestimmten Inhalten zu suchen und diese zu ersetzen. Hier sind einige grundlegende Beispiele dafür, wie Sie bestimmte Zeilen hervorheben können:
Verwenden Sie zuerst vim
um eine Datei zu erstellen:
# vim /test
Wenn der Editor geöffnet wird, geben Sie die folgenden Zeilen ein:
1 Hi
2 How
3 Are
4 You
Neue Datei anzeigen:
# cat test
1 Hi
2 How
3 Are
4 You
Verwenden Sie sed
um alles außer der ersten Zeile zurückzugeben:
# sed 1d test
2 How
3 Are
4 You
Gibt nur die erste Zeile zurück:
# sed 1q test
oder
# sed '1!d' test
1 Hi
Nur die zweite bis vierte Zeile zurückgeben:
# sed '2,4!d' test
2 How
3 Are
4 You
Schlussfolgerung
Es gibt viele andere Tools, die Sie verwenden können, wie zum Beispiel awk
, cut
, sort
, xargs
,usw. Jetzt wissen Sie, wie Sie eine Datei mit echo
erstellen , können Sie damit effektiver experimentieren.