head- und tail-Befehl unter Linux

Anfang und Ende von Dateien anzeigen

Die Befehle head und tail gehören zu den grundlegenden Werkzeugen 🔧 unter Linux, mit denen du den Anfang und das Ende von Textdateien anzeigen kannst.

Wie bei anderen Befehlen steht auch hier der Name symbolisch für das, was getan wird: Kopf und Schwanz.

Dieser Artikel vergleicht die beiden Befehle, zeigt dir wichtige Optionen und gibt Beispiele für den praktischen Einsatz.

Grundlegende Syntax

Die allgemeine Syntax von head und tail sieht so aus:

1
2
head [Optionen] [Datei|-en]
tail [Optionen] [Datei|-en]

Einfaches Beispiel

Im einfachsten Fall kannst du damit die ersten und letzten 10 Zeilen einer Datei ausgeben:

1
2
head /etc/passwd
tail /etc/passwd

Natürlich werden bei Dateien mit weniger Zeilen auch nur die vorhandenen ausgegeben.

Wichtige Optionen

Die Befehle head und tail sind sehr ähnlich, aber nicht identisch. Daher werden wir sie hier auch direkt gegenüberstellen.

Optionen für head

Option Bedeutung
-c N, --bytes=N zeigt die ersten N Bytes an
-n N, --lines=N zeigt die ersten N Zeilen an
-q, --quiet zeigt Dateinamen nicht als Header an
-v, --verbose zeigt Dateinamen als Header an

Optionen für tail

Option Bedeutung
-c N, --bytes=N zeigt die letzten N Bytes an
-n N, --lines=N zeigt die letzten N Zeilen an
-q, --quiet zeigt Dateinamen nicht als Header an
-v, --verbose zeigt Dateinamen als Header an
-f, --follow aktualisiert die Ausgabe bei neuen Zeilen
-s N, --sleep=N Schlafintervall N Sekunden bei f

Praktische Beispiele

Sehen wir uns nun genauer an, wie du beide Befehle sinnvoll einsetzen kannst.

Nur N Zeilen anzeigen

Neben der einfachsten Form kannst du auch angeben wie viele Zeilen du sehen möchtest:

1
2
head -n 3 datei.txt
tail -n 3 datei.txt

Auch diese Variante funkioniert:

1
2
head -n3 datei.txt
tail -n3 datei.txt

Und das lässt sich noch kürzer schreiben:

1
2
head -3 datei.txt
tail -3 datei.txt

Nur ab der Zeile N ausgeben

Wenn du die Zahl N mit einem positiven Vorzeichen angibst, dann werden nur die Daten ab dieser zeile ausgegeben:

1
head +3 datei.txt

Das kann sinnvoll sein, wenn du zum Beispiel einen Header überspringen möchtest und dynamisch alle Datenzeilen ausgeben willst.

Bestimmte Bereiche ausgeben

Es ist auch gut möglich, das du die Befehle kombinierst, um nur einen bestimmten Bereich einer Datei auszugeben.

So könnte das aussehen:

1
head -100 /var/log/syslog | tail -20

Hier werden zum Beispiel 100 Zeilen von oben geholt, aber davon nur die unteren 20 behalten. So werden also die Zeilen 81-100 aus dem Log angezeigt.

Live-Überwachung verwenden

Besonders bei Logs kann es hilfreich sein, wenn man die Ausgabe direkt aktualisiert bekommt, sobald neue Meldungen entstehen. Das kannst du mit -f erreichen:

1
2
tail -f /var/log/nginx/access.log
tail --follow /var/log/nginx/access.log

Du kannst zusätzlich einen Zeilenbereich angeben:

1
tail -n 100 -f /var/log/nginx/access.log

Oder das gleich für mehrere Dateien ausführen:

1
tail -f /var/log/nginx/access.log /var/log/nginx/error.log

Gleichzeitig Beginn und Ende ausgeben

Willst du Anfang und Ende gemeinsam betrachten? Auch das ist möglich:

1
(head -5 /var/log/nginx/access.log && tail -5 /var/log/nginx/access.log)

Mit einer Variable lässt sich der Befehl noch verkürzen:

1
2
log=/var/log/nginx/access.log
(head -5 "$log" && tail -5 "$log")

Kombination mit anderen Befehlen

Weiter oben haben wir bereits gesehen, das du head und tail kombinieren kannst. Aber zusammen mit anderen Befehlen kann das noch viel mehr Sinn ergeben.

So erstellst du dir die Datei für das Beispiel:

1
echo -e "HEADER\nZebra\ntier\nBär\n123\nNonne\nnonne" > sort.txt

Zeig sie dir dann einmal an:

1
cat sort.txt

Das Ergebnis sieht bei mir so aus:

1
2
3
4
5
6
7
HEADER
Zebra
tier
Bär
123
Nonne
nonne

Jetzt werden wir diese Daten sortieren. Aber der HEADER soll immer noch ganz oben stehen:

1
head -1 sort.txt && tail +2 sort.txt | sort

Wir geben dafür zuerst nur die oberste Zeile aus, dann alles ab der zweiten Zeile in sortierter Form.

Hier das Ergebnis:

1
2
3
4
5
6
7
HEADER
123
Bär
nonne
Nonne
tier
Zebra

Fazit

Mit head und tail lassen sich Anfang und Ende von Dateien ganz einfach anzeigen.

Jetzt bist du dran: Experimentiere 💥 mit den Befehlen und sende mir deine Fragen!

Verwandte Befehle

Willst du tiefer einsteigen, dann sieh dir auch die verwandten Befehle zu head und tail an:

Hilfe zu command

Mehr zu command findest du unter man command und tldr command.

Details zum Befehl tldr gibt es hier.

Erstellt mit Hugo
Theme Stack gestaltet von Jimmy