====== 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}}