====== 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 =====
* Zugriff auf die Linux-Kommandozeile
* Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]]
===== Ü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]
==== Navigation in less ====
^ 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]
==== Navigation in more ====
^ 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 =====
* [[sammlung:grep|grep - Text durchsuchen]]
* [[sammlung:less|less - Detaillierte Dokumentation]]
* [[sammlung:vim|vim - Texteditor]]
* [[sammlung:nano|nano - Einfacher Editor]]
* [[sammlung:bash_kommandos|Bash Kommandos]]
{{tag>linux kommandozeile dateien anzeigen pager}}