Der Befehl head gibt die ersten Zeilen einer Datei auf der Standardausgabe aus. In der Voreinstellung sind das die ersten 10 Zeilen — mit -n lässt sich die Anzahl frei wählen, mit -c werden statt Zeilen Bytes ausgegeben. head ist das Standardwerkzeug, um schnell in eine Datei oder einen Datenstrom hineinzuschauen, ohne sie ganz zu öffnen.
Was head macht
Ohne Argumente liest head von einer Datei (oder von stdin) und gibt die ersten 10 Zeilen aus. Das Verhalten lässt sich über zwei Achsen steuern:
- Mit
-n Ndie Anzahl der Zeilen ändern. - Mit
-c Nstatt Zeilen die Anzahl der Bytes ausgeben.
head /etc/passwdroot:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologinhead liest sequentiell von oben — bei riesigen Dateien stoppt der Befehl, sobald genug gelesen wurde, und ist damit deutlich günstiger als cat.
Optionen
| Option | Wirkung |
|---|---|
-n N | Gibt die ersten N Zeilen aus (statt der voreingestellten 10) |
-n -N | Gibt alle Zeilen außer den letzten N aus |
-c N | Gibt die ersten N Bytes aus (statt Zeilen) |
-c -N | Gibt alle Bytes außer den letzten N aus |
-q | Quiet — unterdrückt die Header bei mehreren Dateien |
-v | Verbose — gibt immer einen Header aus, auch bei einer einzelnen Datei |
Die Zahl bei -n und -c akzeptiert auch Suffixe wie K, M, G für Kilo-, Mega-, Gigabyte (bei GNU coreutils).
head -n 3 /etc/passwd
head -c 100 /etc/passwdMehrere Dateien
Übergibst du head mehrere Dateien, gibt es zwischen den Ausgaben einen Header in der Form ==> dateiname <== aus. Mit -q lässt sich das unterdrücken, mit -v erzwingen — auch bei einer einzelnen Datei.
head -n 2 access.log error.log==> access.log <==
127.0.0.1 - - [01/May/2026:10:01:23] "GET / HTTP/1.1" 200 1234
127.0.0.1 - - [01/May/2026:10:01:24] "GET /style.css HTTP/1.1" 200 567
==> error.log <==
[Fri May 01 10:01:23 2026] [error] File not found: /favicon.ico
[Fri May 01 10:02:01 2026] [warn] Slow query: 2.1sNegativ-Modus mit Minus
Eine weniger bekannte, aber praktische Variante: Wenn du -n oder -c einen negativen Wert mitgibst, gibt head alles außer den letzten N Zeilen (bzw. Bytes) aus.
head -n -5 datei.txtDas ist das Spiegelbild von tail -n +N und nützlich, wenn du z. B. eine Datei ohne ihren Footer weiterverarbeiten willst — etwa bei generierten Reports mit fester Schluss-Signatur.
Praxis-Patterns
Ein paar Standardanwendungen, die im Alltag immer wieder auftauchen:
- Logs anpeeken —
head -n 50 /var/log/syslogliefert den Anfang einer Logdatei, ohne sie ganz zu laden. - CSV-Header lesen —
head -1 daten.csvzeigt nur die Spaltenüberschriften. - Shebang prüfen —
head -n 1 script.shzeigt die erste Zeile, also typischerweise#!/bin/bashoder Ähnliches. - Pipe-Inspektion —
./script.sh | headzeigt nur die ersten Zeilen einer langen Ausgabe;headschließt die Pipe danach selbständig. - Große Dumps anschauen —
head -c 1K dump.binzeigt einen handlichen Anfang einer Binärdatei.
head -n 2 verkaeufe.csvdatum,produkt,menge,preis
2026-05-01,Tee,3,12.90Mit -n 2 siehst du die Kopfzeile und gleich eine echte Datenzeile darunter — gut, um beim Verarbeiten zu prüfen, ob Spaltenanzahl und Trennzeichen zur Annahme passen, bevor du Pipelines mit awk oder cut baust.
Besonderheiten
head -c kann mitten im Zeichen abschneiden
Mit -c zählt head Bytes, keine Zeichen. Bei UTF-8-Dateien können Multi-Byte-Zeichen dadurch mitten in der Sequenz abgeschnitten werden — die Ausgabe enthält dann ein ungültiges Byte am Ende. Wenn du auf Zeichenebene arbeiten willst, ist cut -c (mit Vorsicht) oder ein Locale-bewusstes Tool wie awk die bessere Wahl.
head -n -N ist GNU-Spezifisch
Der Negativ-Modus (head -n -5) stammt aus den GNU coreutils und war lange Linux-exklusiv. BSD- und macOS-Varianten haben das Feature erst spät übernommen — auf älteren Systemen oder im POSIX-Modus ist es nicht garantiert. Im Zweifel mit tac und tail simulieren oder explizit GNU ghead (über Homebrew) verwenden.
head schließt früh — perfekt für Pipes
Sobald head genug gelesen hat, schließt es seinen stdin und beendet sich. Das schickt dem vorgeschalteten Prozess in der Pipe ein SIGPIPE, was den ihn meist sofort beendet. Praktischer Effekt: find / | head durchsucht nicht das ganze Dateisystem, sondern bricht ab, sobald 10 Treffer da sind.
head -n 5 vs. sed -n 1,5p
Funktional identisch — beide geben die ersten 5 Zeilen aus. head ist kürzer, schneller und beendet sich früh. sed -n 1,5p liest hingegen die gesamte Datei bis zum Ende durch, weil sed nicht weiß, dass keine weiteren Treffer mehr kommen. Bei großen Dateien ein spürbarer Unterschied.
Weiterführende Ressourcen
Externe Quellen
- head(1) – Linux man page — Offizielle Dokumentation des head-Befehls
- GNU Coreutils: head invocation — Vollständige Beschreibung der GNU-Variante
- POSIX head specification — Der portable Standard
Verwandte Artikel
- tail – die letzten Zeilen einer Datei — Das Gegenstück zu head, ideal für Logs
- cat – Dateien ausgeben — Komplette Dateien auf stdout schreiben
- less – Dateien seitenweise anzeigen — Interaktiver Pager für lange Dateien
- sed – Stream-Editor — Mächtige Zeilen-basierte Bearbeitung
- grep – Muster in Dateien suchen — Reguläre Ausdrücke auf Textdateien anwenden