Inhaltsverzeichnis

Dateien anzeigen: cat, less, more, head und tail

Diese Kommandos ermöglichen das Anzeigen von Dateiinhalten auf der Kommandozeile. Jedes Tool hat seine spezifischen Einsatzgebiete - von der schnellen Ausgabe kleiner Dateien bis zur interaktiven Navigation in großen Log-Dateien.

Voraussetzungen

Übersicht

Kommando Verwendung Best für
cat Gesamten Dateiinhalt ausgeben Kleine Dateien, Zusammenfügen, Pipes
less Interaktiv durch Datei navigieren Große Dateien, Logs durchsuchen
more Seitenweise durch Datei blättern Einfaches Paging (veraltet)
head Erste Zeilen einer Datei Datei-Anfang prüfen
tail Letzte Zeilen einer Datei Log-Dateien, Live-Überwachung

cat - Concatenate

cat gibt den gesamten Inhalt einer oder mehrerer Dateien aus.

Grundlegende Syntax

cat [OPTIONEN] [DATEI...]

Häufige Anwendungen

# Datei anzeigen
cat datei.txt
 
# Mehrere Dateien anzeigen
cat datei1.txt datei2.txt
 
# Mit Zeilennummern
cat -n datei.txt
 
# Nur nicht-leere Zeilen nummerieren
cat -b datei.txt
 
# Zeichen sichtbar machen
cat -A datei.txt  # Zeigt Tabs (^I) und Zeilenenden ($)
cat -v datei.txt  # Zeigt nicht-druckbare Zeichen

Praktische Beispiele

# Dateien zusammenfügen
cat teil1.txt teil2.txt teil3.txt > komplett.txt
 
# An Datei anhängen
cat zusatz.txt >> hauptdatei.txt
 
# Datei erstellen (hier-doc)
cat > neue-datei.txt << EOF
Zeile 1
Zeile 2
Zeile 3
EOF
 
# Stdin in Datei schreiben
cat > notiz.txt
# Tippen, mit Ctrl+D beenden
 
# Leere Datei erstellen
cat /dev/null > leere-datei.txt
 
# Datei kopieren
cat quelle.txt > ziel.txt

In Pipes

# Mit grep kombinieren
cat access.log | grep "404"
 
# Zeilen zählen
cat datei.txt | wc -l
 
# Sortieren
cat namen.txt | sort
 
# Duplikate entfernen
cat liste.txt | sort | uniq

Nützliche Optionen

Option Bedeutung
-n Alle Zeilen nummerieren
-b Nur nicht-leere Zeilen nummerieren
-s Mehrere Leerzeilen zu einer zusammenfassen
-A Alle nicht-druckbaren Zeichen anzeigen
-E Zeilenenden mit $ markieren
-T Tabs als I anzeigen
-v Nicht-druckbare Zeichen sichtbar machen

less - Interaktiver Pager

less ist ein interaktiver Datei-Betrachter mit erweiterten Navigationsmöglichkeiten.

Grundlegende Syntax

less [OPTIONEN] [DATEI]
Taste Funktion
Space, f Eine Seite vorwärts
b Eine Seite rückwärts
Enter, j Eine Zeile vorwärts
k Eine Zeile rückwärts
g Zum Anfang der Datei
G Zum Ende der Datei
/muster Vorwärts suchen
?muster Rückwärts suchen
n Nächster Treffer
N Vorheriger Treffer
h Hilfe anzeigen
q Beenden

Häufige Anwendungen

# Datei anzeigen
less datei.txt
 
# Mit Zeilennummern
less -N datei.txt
 
# Lange Zeilen umbrechen
less -S datei.txt  # Kein Umbrechen (scrollen mit Pfeiltasten)
 
# Farbige Ausgabe beibehalten
less -R farbige-ausgabe.txt
 
# Mehrere Dateien
less datei1.txt datei2.txt
# Mit :n zur nächsten, :p zur vorherigen Datei
 
# Follow-Mode (wie tail -f)
less +F logfile.log
# Ctrl+C zum Stoppen, F zum Fortsetzen

Praktische Beispiele

# Log-Datei durchsuchen
less /var/log/syslog
# Dann: /error (suchen), n (nächster), N (vorheriger)
 
# Nur bestimmte Zeilen anzeigen
grep "ERROR" logfile.log | less
 
# Mit Syntax-Highlighting
less -R <(cat script.sh | pygmentize -l bash)
 
# Binärdatei sicher anzeigen
less bild.jpg  # Zeigt Hex-Werte statt Binär-Chaos
 
# Komprimierte Dateien
less datei.gz  # less dekomprimiert automatisch

Nützliche Optionen

Option Bedeutung
-N Zeilennummern anzeigen
-S Lange Zeilen nicht umbrechen
-R ANSI-Farben interpretieren
-X Bildschirm nicht löschen beim Beenden
-F Beenden wenn Inhalt auf eine Seite passt
+F Follow-Mode (wie tail -f)
-i Groß-/Kleinschreibung bei Suche ignorieren
+G Zum Ende der Datei springen

more - Einfacher Pager

more ist der ältere, einfachere Vorgänger von less.

Grundlegende Syntax

more [OPTIONEN] [DATEI]
Taste Funktion
Space Nächste Seite
Enter Nächste Zeile
b Vorherige Seite (falls unterstützt)
/muster Suchen
q Beenden

Beispiele

# Datei anzeigen
more datei.txt
 
# Mit Zeilennummern pro Seite
more -n 20 datei.txt
 
# Mehrere Dateien
more datei1.txt datei2.txt

Empfehlung: Nutzen Sie less statt more - es bietet mehr Funktionen und ist rückwärts-kompatibel.

head - Erste Zeilen

head zeigt den Anfang einer Datei (Standard: 10 Zeilen).

Grundlegende Syntax

head [OPTIONEN] [DATEI...]

Häufige Anwendungen

# Erste 10 Zeilen (Standard)
head datei.txt
 
# Erste 20 Zeilen
head -n 20 datei.txt
head -20 datei.txt  # Kurzform
 
# Erste 100 Bytes
head -c 100 datei.txt
 
# Mehrere Dateien
head datei1.txt datei2.txt
 
# Ohne Dateinamen-Header
head -q datei1.txt datei2.txt
 
# Alles außer die letzten 5 Zeilen
head -n -5 datei.txt

Praktische Beispiele

# CSV-Header anzeigen
head -n 1 daten.csv
 
# Erste Zeile jeder Datei im Verzeichnis
head -n 1 *.txt
 
# Log-Anfang prüfen
head /var/log/syslog
 
# Große Datei samplen
head -n 1000 grosse-datei.txt > sample.txt
 
# Mit tail kombinieren (Zeilen 10-20)
head -n 20 datei.txt | tail -n 10
 
# Erste Zeile jeder Datei mit Namen
for file in *.log; do
    echo "=== $file ==="
    head -n 1 "$file"
done

tail - Letzte Zeilen

tail zeigt das Ende einer Datei (Standard: 10 Zeilen) und kann Dateien live überwachen.

Grundlegende Syntax

tail [OPTIONEN] [DATEI...]

Häufige Anwendungen

# Letzte 10 Zeilen (Standard)
tail datei.txt
 
# Letzte 20 Zeilen
tail -n 20 datei.txt
tail -20 datei.txt  # Kurzform
 
# Live-Überwachung (Follow-Mode)
tail -f logfile.log
 
# Ab Zeile 10 bis Ende
tail -n +10 datei.txt
 
# Letzte 100 Bytes
tail -c 100 datei.txt
 
# Mehrere Dateien live überwachen
tail -f /var/log/syslog /var/log/auth.log

Praktische Beispiele

# Log-Dateien live verfolgen
tail -f /var/log/syslog
 
# Mit Zeilennummern
tail -n 50 datei.txt | cat -n
 
# Letzte 10 Minuten eines Logs (approximativ)
tail -n 1000 access.log
 
# Follow mit Retry (auch wenn Datei nicht existiert)
tail -F logfile.log  # -F statt -f
 
# Nur neue Zeilen ab jetzt
tail -f -n 0 logfile.log
 
# Mit grep filtern
tail -f application.log | grep ERROR
 
# Mehrere Logs mit Farben
tail -f *.log | grep --color=auto "ERROR\|WARNING\|$"
 
# Follow und Beenden nach 10 Sekunden
timeout 10 tail -f logfile.log

Live-Monitoring mit tail -f

# Apache Access-Log
tail -f /var/log/apache2/access.log
 
# Mehrere Logs gleichzeitig
tail -f /var/log/syslog /var/log/auth.log
 
# Mit grep filtern
tail -f /var/log/syslog | grep "error"
 
# Mit awk formatieren
tail -f access.log | awk '{print $1, $7}'
 
# Farbiges Output
tail -f syslog | grep --color=auto "ERROR\|$"
 
# Follow und in Datei schreiben
tail -f source.log | tee -a copy.log
 
# Beenden mit Ctrl+C

Vergleich und Kombination

Wann welches Tool?

# Kleine Datei komplett anzeigen
cat kleine-datei.txt
 
# Große Datei interaktiv durchsuchen
less grosse-datei.txt
 
# Datei-Anfang prüfen
head config.ini
 
# Log-Ende ansehen
tail -n 50 /var/log/syslog
 
# Log live überwachen
tail -f /var/log/application.log
 
# Bestimmte Zeilen (20-30)
head -n 30 datei.txt | tail -n 10

Kombinationen

# Zeilen 100-200 anzeigen
head -n 200 datei.txt | tail -n 100
 
# Mittelteil einer Datei
cat datei.txt | head -n 1000 | tail -n 500
 
# CSV-Daten samplen (Header + 10 Zeilen)
(head -n 1 daten.csv; tail -n 10 daten.csv)
 
# Log-Rotation überwachen
tail -f /var/log/app.log /var/log/app.log.1
 
# Logs mit Zeitstempel
tail -f syslog | while read line; do
    echo "$(date '+%H:%M:%S') $line"
done

Tipps und Tricks

Performance

# Große Dateien: less statt cat
less huge-file.log  # Lädt nicht alles in Speicher
 
# Nur bestimmte Zeilen: head/tail statt cat | grep
head -n 1000 large.log | grep "error"  # Schneller
 
# Zählen ohne cat
wc -l datei.txt  # Statt: cat datei.txt | wc -l

Aliase

# In ~/.bashrc
alias tailf='tail -f'
alias logs='tail -f /var/log/syslog'
alias errlog='tail -f /var/log/syslog | grep -i error'

Siehe auch