GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Head- und Tail-Befehle in Linux mit Beispielen erklärt

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.


Linux
  1. So verwenden Sie die Befehle „cat“ und „tac“ mit Beispielen in Linux

  2. Linux-Befehle – Übersicht und Beispiele

  3. Linux-Kopfbefehl mit Beispielen

  4. Linux Traceroute-Befehl, erklärt mit Beispielen

  5. 20 grundlegende Linux-Befehle für Anfänger mit Beispielen erklärt

Die Alias- und Unalias-Befehle mit Beispielen erklärt

Tr-Befehl in Linux mit Beispielen erklärt

w Befehl mit Beispielen in Linux erklärt

Linux-Dateiberechtigungen und Eigentumsrechte mit Beispielen erklärt

Linux tee-Befehl erklärt (mit Beispielen)

Linux csplit Befehl erklärt (mit Beispielen)