Das Abrufen eines Textabschnitts aus Eingabedateien in Linux ist eine gängige Operation. Manchmal sind wir jedoch daran interessiert, nur ein paar Zeilen einer Datei anzuzeigen. Linux stellt uns die Head- und Tail-Befehle zur Verfügung, um nur die Zeilen zu drucken, an denen wir interessiert sind.
Inhaltsverzeichnis
- Head-Befehl unter Linux
- Geben Sie eine bestimmte Anzahl von Zeilen mit dem Head-Befehl aus
- Geben Sie eine bestimmte Anzahl von Bytes mit dem Head-Befehl aus
- Mehrere Dateien mit dem Head-Befehl ausgeben
- Wie man den Head-Befehl mit Pipes verwendet
- Tail-Befehl unter Linux
- Geben Sie eine bestimmte Anzahl von Zeilen mit dem tail-Befehl aus
- Verwendung des tail-Befehls mit Pipes
- Überwachen Sie eine Datei mit dem tail-Befehl auf Änderungen
- Gemeinsame Verwendung von Head- und Tail-Befehlen in Linux
- Schlussfolgerung
Linux head
und tail
Befehle sind sehr ähnlich. Sie sind standardmäßig in allen Linux-Distributionen installiert. Lassen Sie uns zuerst verstehen, was sie sind und wofür sie verwendet werden.
Kurz gesagt, wie der Name schon sagt, der head
Der Befehl gibt Zeilen vom Anfang einer Datei und den tail
aus Befehl gibt Zeilen vom Dateiende aus. Beide Befehle schreiben das Ergebnis auf die Standardausgabe.
Lassen Sie uns nun anhand von Beispielen lernen, wie man sie verwendet.
Head-Befehl in Linux
Die Syntax des head
Befehl ist ziemlich einfach:
head [OPTIONS] FILES
Standardmäßig ohne Option , der head
zeigt die ersten 10 Zeilen der Datei an. Einfach so.
head /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin
Natürlich gibt es Optionen, die wir während der Ausführung des Befehls definieren können, um die angepasste Ausgabe zu erhalten.
Gib eine bestimmte Anzahl von Zeilen mit dem Head-Befehl aus
Wenn Sie eine andere Anzahl von Zeilen als die standardmäßigen 10 abrufen möchten, dann -n
Die Option wird zusammen mit einer Ganzzahl verwendet, die die Anzahl der abzurufenden Zeilen angibt.
Der folgende Befehl zeigt beispielsweise die ersten 3 Zeilen von /etc/passwd
an Datei.
head -n 3 /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
Gib eine bestimmte Anzahl von Bytes mit dem Head-Befehl aus
Zusätzlich zum head
Der Befehl kann den Dateiinhalt auch byteweise drucken. Übergeben Sie einfach das -c
Option zum Befehl. Denken Sie daran, dass Zeilenumbrüche als einzelnes Zeichen zählen, also wenn head
gibt einen Zeilenumbruch aus, es wird als Byte gezählt.
Der folgende Befehl zeigt beispielsweise die ersten 8 Byte aus /etc/passwd
an Datei.
head -c 8 /etc/passwd
root:x:0
Mehrere Dateien mit dem Head-Befehl ausgeben
Natürlich der head
Der Befehl kann auch mehrere Dateien verarbeiten. Der folgende Befehl zeigt beispielsweise die ersten 3 Zeilen von /etc/passwd
und /etc/group
Dateien.
head -n 3 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
==> /etc/group <==
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:
Hinzufügen des -q
Option für das obige Beispiel entfernt Kopfzeilen, die Dateinamen angeben.
head -q -n 3 /etc/passwd /etc/group
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:
Wie man den Head-Befehl mit Pipes verwendet
Der head
Befehl kann an andere Befehle weitergeleitet werden. Im folgenden Beispiel die Ausgabe von ls
Befehl wird an head
geleitet um die fünf zuletzt geänderten Dateien oder Ordner in /etc
anzuzeigen Verzeichnis.
ls -t /etc | head -n 5
ld.so.cache
resolv.conf
systemd
libreoffice
profile.d
Inzwischen sollten Sie ein gutes Verständnis für die Verwendung des head
von Linux haben Befehl. Schauen wir uns nun den tail
an Befehl.
Tail-Befehl unter Linux
Der Tail-Befehl in Linux ist derselbe wie der head
Befehl. Im Gegensatz zum head
Befehl, jedoch der tail
druckt die letzten paar Zeilen (standardmäßig 10 Zeilen) einer bestimmten Datei.
Die grundlegende Syntax des tail-Befehls lautet:
tail [OPTIONS] FILES
Beispielsweise druckt der folgende Befehl die letzten 10 Zeilen aus /etc/locale.gen
Datei.
tail /etc/locale.gen
#zh_HK.UTF-8 UTF-8
#zh_HK BIG5-HKSCS
#zh_SG.UTF-8 UTF-8
#zh_SG.GBK GBK
#zh_SG GB2312
#zh_TW.EUC-TW EUC-TW
#zh_TW.UTF-8 UTF-8
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1
Gib eine bestimmte Anzahl von Zeilen mit dem tail-Befehl aus
Ähnlich dem head
Befehl können Sie die letzten paar Zeilen auch mit -n
drucken Option wie unten gezeigt.
tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1
Verwendung des tail-Befehls mit Pipes
Zuvor haben wir die Ausgabe von head
weitergeleitet in ls
. Wir können auch die Ausgabe anderer Befehle in tail
leiten .
Zum Beispiel, um die fünf Dateien oder Ordner in /etc
zu identifizieren Verzeichnis mit den ältesten Änderungszeiten und leiten Sie die Ausgabe an tail
weiter :
ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf
Überwachung einer Datei auf Änderungen mithilfe des tail-Befehls
Es gibt eine weitere mächtige Funktion in tail
Befehl. Manchmal ändert sich die Eingabedatei, die wir überprüfen möchten. Beispielsweise kann eine laufende Anwendung ihre Ausgabe an eine Protokolldatei anhängen. Wenn wir den tail
ausführen Befehl mit -f
Option auf der sich ändernden Datei werden alle neu hinzugefügten Zeilen an die Standardausgabe angehängt. Dies könnte bei weitem die nützlichste und am häufigsten verwendete Option für tail
sein Befehl.
Beispielsweise können Sie neue Zeilen sehen, die am Ende einer Nginx-Protokolldatei hinzugefügt werden, während sie hinzugefügt werden, wie folgt:
tail -f /var/log/nginx/access.log
172.16.1.122 - - [08/Apr/2021:08:15:32 +0000] "POST /wp-admin/admin-ajax.php HTTP/1.1" 200 109 "https://linuxwizard.com/wp-admin/post.php?post=18254&action=edit" "Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
172.16.1.122 - - [08/Apr/2021:08:19:27 +0000] "GET /feed/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1"
172.16.1.122 - - [08/Apr/2021:08:19:49 +0000] "HEAD /feed/ HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
Da jeder neue Protokolleintrag zur Protokolldatei hinzugefügt wird, tail
aktualisiert seine Anzeige im Terminalfenster.
Gemeinsame Verwendung von Head- und Tail-Befehlen unter Linux
Als tail
und head
Befehle verschiedene Teile von Dateien drucken, können wir diese beiden kombinieren, um eine erweiterte Filterung des Dateiinhalts zu drucken. Wenn Sie beispielsweise den Inhalt aus der Mitte einer Datei lesen möchten, müssen Sie beide Befehle zusammen verwenden.
Nehmen wir an, wir wollen von der 5. bis zur 10. Zeile von /etc/passwd
gelangen Datei. Zuerst head
Der Befehl ruft die ersten 10 Zeilen und tail
ab Der Befehl ruft die letzten 5 Zeilen aus der Ausgabe von head
ab Befehl.
head -n 10 /etc/passwd | tail -n 5
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin
Schlussfolgerung
Das ist alles für jetzt. In diesem Artikel haben wir anhand von Beispielen einige typische Verwendungen beider Befehle gelernt. Wie Sie sehen können, sind sowohl der tail
und der head
Befehle sind sehr nützlich, um genau zu steuern, welcher Dateiinhalt auf dem Bildschirm gedruckt wird. Sicherlich handelt es sich um flexible Befehle, die die Verwaltung Ihrer Dateien erheblich verbessern können. Probieren Sie sie aus.
Benötigen Sie weitere Informationen? Überprüfen Sie den head
und der tail
Befehlsseiten.