Linux / Befehl head: Den Anfang einer Datei anzeigen

Der head-Befehl druckt den Anfang einer Datei oder der Standardeingabe. Standardmäßig sind dies die ersten zehn Zeilen und er ist nützlich, um Kopfzeilen zu prüfen und Datenstichproben zu lesen oder den sichtbaren Teil der Pipeline-Ausgabe zu begrenzen.

Verwenden Sie -n, um eine Anzahl von Zeilen auszuwählen, und -c, um Bytes auszuwählen. Bei mehreren Dateien identifiziert normalerweise ein Dateiname-Kopf jede Ausgabe. GNU head unterstützt auch negative Zählwerte, die bedeuten, dass alle Eingaben außer der letzten Anzahl von Zeilen oder Bytes genommen werden.

Ergänzende Befehle und Anwendungsfälle finden Sie in Essenzielle Linux-Befehle: Ein praktisches Nachschlagewerk nach Aufgabe.

Grundlegende Syntax

head [OPTION]... [FILE]...

Optionen und Randfälle können je nach Implementierung und Version variieren. Überprüfen Sie head --help und man head auf dem Zielsystem, bevor Sie sich auf implementierungsspezifisches Verhalten verlassen.

Grundlegende Head-Verwendung

Die ersten zehn Zeilen anzeigen

Ohne die Option zur Angabe der Anzahl druckt head zehn Zeilen von jeder Eingabe.

head access.log

Eine Zeilenanzahl wählen

Geben Sie die erforderliche Anzahl an -n weiter.

head -n 25 access.log

Wählen Sie eine Byte-Anzahl

Die Anzahl bezieht sich auf Bytes, nicht auf Unicode-Zeichen, daher kann ein Mehrbyte-Zeichen geteilt werden.

head -c 64 sample.bin

Ergebnisse des Lesens nur des Anfangs

head -n 2 druckt nur die ersten zwei Zeilen der Eingabe. Es ist nützlich, um kleine Proben zu prüfen, ohne das Original zu ändern.

printf 'one\ntwo\nthree\n' | head -n 2

Beispielausgabe:

one
two

Wenn der Befehl vor der Pipe große Datenmengen erzeugt, kann head vorzeitig beendet werden, was einen Broken-Pipe-Fehler im vorhergehenden Befehl verursacht. In der Automatisierung sollten Sie den Exit-Status der gesamten Pipeline prüfen.

Wichtige Optionen

Option Zweck
-n NUM Drucken Sie die ersten NUM Zeilen.
-c NUM Drucken Sie die ersten NUM Bytes.
-q Dateinamensheader für mehrere Eingaben unterdrücken.
-v Immer Dateinamensheader drucken.
-n -NUM Auf GNU-Systemen alle außer den letzten NUM Zeilen drucken.
-c -NUM Auf GNU-Systemen alle außer den letzten NUM Bytes drucken.

Praktische Beispiele

CSV-Header und Beispiel inspizieren

Die Spaltenüberschrift und einige Datensätze anzeigen, ohne den gesamten Datensatz zu öffnen.

head -n 6 sales.csv

Anfänge mehrerer Logs vergleichen

Dateinamensheader erzwingen, damit die Quelle jedes Abschnitts klar bleibt.

head -v -n 5 app.log worker.log

Ein Befehlsresultat begrenzen

Der Produzent kann SIGPIPE erhalten, nachdem head genügend Eingaben hat, was beim Interpretieren des Status einer strikten Pipeline von Bedeutung ist.

find /var/log -type f | head -n 20

head und verwandte Befehle

Befehl Hauptrolle Geeignet für
head Den Anfang ausgeben Header und Beispiele
tail Das Ende ausgeben oder verfolgen Aktuelle Protokolleinträge
sed Bereiche auswählen und transformieren Komplexere Zeilenverarbeitung
less Durchsuchen Sie die vollständige Eingabe Interaktive Suche

Wichtige Hinweise

Byte-Zahlen sind keine Zeichen-Zahlen

Ein UTF-8-Zeichen kann zwischen Bytes getrennt werden und fehlerhaft erscheinen.

Head behält die vorhandene Reihenfolge bei

Sortieren Sie zuerst, wenn das gewünschte Ergebnis auf Wert, Größe oder Zeit und nicht auf der aktuellen Reihenfolge basiert.

Überprüfen Sie die Exit-Semantik der Pipeline

Mit pipefail kann ein upstream SIGPIPE einen ungleich Null Pipeline-Status erzeugen, selbst wenn head die angeforderten Zeilen erhalten hat.

FAQ

Wie viele Zeilen druckt head standardmäßig?

Zehn Zeilen.

Wie drucke ich nur die erste Zeile?

Verwenden Sie head -n 1 FILE.

Welcher Befehl druckt die letzten Zeilen?

Verwenden Sie tail.

Kann ich das erste 1 KiB drucken?

GNU head akzeptiert head -c 1K FILE; prüfen Sie die Suffix-Unterstützung bei anderen Implementierungen.

Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils head-Dokumentation.