Was steht in einer Konfigurationsdatei? Welche Meldungen wurden zuletzt in ein Protokoll geschrieben? Und welches Verzeichnis belegt besonders viel Speicher?
Unter Linux gibt es dafür spezialisierte Werkzeuge: `cat`, `less` und `more` zeigen Textinhalte, `head` und `tail` liefern Ausschnitte. Mit `od` untersuchst du die enthaltenen Bytes. `ls` zeigt Verzeichniseinträge und Dateieigenschaften, während `du` die Speicherbelegung ermittelt.
Kleine Textdateien mit `cat` anzeigen
-------------------------------------
Mit `cat` gibst du den Inhalt einer Datei direkt im Terminal aus:
```
cat notizen.txt
```
Das eignet sich für kurze Texte und überschaubare Konfigurationen. Bei langen Dateien läuft die Ausgabe dagegen schnell über mehrere Bildschirmseiten. `cat` hält dabei nicht zum Lesen an.
### Mehrere Dateien anzeigen
```
cat teil1.txt teil2.txt
```
Die Inhalte werden in der angegebenen Reihenfolge hintereinander ausgegeben. `cat` steht für „concatenate“, also zusammenfügen beziehungsweise verketten.
### Zeilennummern einblenden
```
cat -n notizen.txt
```
Die Nummern erscheinen nur in der Ausgabe. Die Datei wird nicht verändert.
Mit `-b` werden nur nicht leere Zeilen nummeriert:
```
cat -b notizen.txt
```
Für die schnelle Kontrolle kleiner Textdateien ist `cat` damit ein einfaches Werkzeug.
Längere Dateien mit `less` lesen
--------------------------------
Wenn du in einer Datei blättern oder suchen möchtest, ist `less` meist praktischer:
```
less notizen.txt
```
Die Datei wird in einer interaktiven Ansicht geöffnet. Du kannst vorwärts und rückwärts navigieren, ohne den gesamten Inhalt auf einmal im Terminal auszugeben.
### Die wichtigsten Tasten
| Taste | Aktion |
|---|---|
| Enter | Eine Zeile weiter |
| Leertaste | Eine Bildschirmseite vorwärts |
| `b` | Eine Bildschirmseite zurück |
| `g` | Zum Anfang springen |
| `G` | Zum Ende springen |
| `/Suchbegriff` und Enter | Vorwärts suchen |
| `n` | Zum nächsten Suchtreffer |
| `N` | Suche in Gegenrichtung wiederholen |
| `q` | `less` beenden |
Groß- und Kleinschreibung spielen bei den Tasten eine Rolle: `g` und `G` führen beispielsweise unterschiedliche Aktionen aus.
### Zeilennummern und lange Zeilen
Mit `-N` blendest du Zeilennummern ein:
```
less -N konfiguration.conf
```
Mit `-S` verhinderst du den automatischen Umbruch langer Zeilen:
```
less -S breite-tabelle.txt
```
Du kannst dann mit den Pfeiltasten nach rechts und links scrollen. Das ist beispielsweise bei breiten Tabellen oder langen Protokollzeilen hilfreich.
Seitenweise lesen mit `more`
----------------------------
Auch `more` zeigt Text Bildschirmseite für Bildschirmseite:
```
more notizen.txt
```
Die wichtigsten Tasten:
- Leertaste: Eine Seite weiter.
- Enter: Eine Zeile weiter.
- `/Suchbegriff` und Enter: Suchen.
- `q`: Beenden.
`more` bietet weniger Funktionen als `less`. Die verbreitete util-linux-Variante kann beim Lesen einer regulären Datei mit `b` auch zurückblättern; bei Eingaben aus einer Pipe funktioniert das nicht. Für komfortables Lesen und Navigieren ist `less` deshalb gewöhnlich die vielseitigere Wahl.
Den Dateianfang mit `head` ansehen
----------------------------------
Oft möchtest du nicht die ganze Datei lesen, sondern nur wissen, wie sie beginnt. Dafür verwendest du `head`:
```
head daten.csv
```
Standardmäßig erscheinen die ersten zehn Zeilen.
Mit `-n` bestimmst du die Anzahl:
```
head -n 5 daten.csv
```
Das ist beispielsweise nützlich, um die Kopfzeile und einige Datensätze einer Tabelle zu prüfen.
Du kannst auch mehrere Dateien angeben:
```
head -n 5 datei1.txt datei2.txt
```
Die Ausgabe erhält dann Überschriften, damit die Ausschnitte den jeweiligen Dateien zugeordnet werden können.
Das Dateiende mit `tail` ansehen
--------------------------------
`tail` arbeitet vom Ende einer Datei aus:
```
tail anwendung.log
```
Standardmäßig zeigt es die letzten zehn Zeilen. Für einen größeren Ausschnitt:
```
tail -n 30 anwendung.log
```
Das ist besonders bei Protokollen interessant, weil neue Einträge häufig am Dateiende hinzukommen.
### Neue Einträge live verfolgen
```
tail -f anwendung.log
```
Nach dem letzten Ausschnitt wartet `tail` auf weitere Daten und zeigt angehängte Inhalte an.
Mit `Strg+C` beendest du die laufende Beobachtung. Die Datei wird dadurch nicht verändert.
### Wenn Protokolldateien ersetzt werden: `tail -F`
Bei einer Logrotation kann eine Protokolldatei umbenannt und durch eine neue Datei gleichen Namens ersetzt werden.
Dafür ist diese Variante hilfreich:
```
tail -F anwendung.log
```
`tail -F` folgt dem Dateinamen und versucht weiter, die Datei zu öffnen, wenn sie vorübergehend nicht erreichbar ist. Ein einfaches `tail -f` folgt standardmäßig dagegen dem geöffneten Dateideskriptor und kann dadurch bei der alten Datei bleiben.
Verzeichnisinhalte mit `ls` ansehen
-----------------------------------
Ein Verzeichnis untersuchst du normalerweise nicht mit `cat`, sondern mit `ls`:
```
ls
```
Oder mit einer ausdrücklichen Pfadangabe:
```
ls ~/Dokumente
```
Die Ausgabe zeigt die enthaltenen Namen. Versteckte Einträge mit einem Punkt am Anfang werden standardmäßig ausgelassen.
### Eigenschaften und Größen anzeigen
```
ls -lh
```
Die lange Ausgabe enthält unter anderem Dateityp, Rechte, Eigentümer, Gruppe, Größe und Änderungszeit. Mit `-h` werden Größen in leichter lesbaren Einheiten dargestellt.
Auch versteckte Einträge anzeigen:
```
ls -lah
```
Ein einzelnes Verzeichnis selbst prüfen, ohne dessen Inhalt aufzulisten:
```
ls -ldh ~/Dokumente
```
Die Option `-d` ist hier entscheidend.
### Nach Dateigröße sortieren
```
ls -lhS
```
Die größten Einträge erscheinen zuerst.
Wichtig: Bei Verzeichnissen ist die angezeigte Größe nicht die Summe aller darin enthaltenen Dateien. Wenn du wissen möchtest, wie viel Speicher ein ganzer Verzeichnisbaum belegt, benötigst du `du`.
Inhalte und Eigenschaften von Links prüfen
------------------------------------------
Bei Links sind zwei Fragen zu unterscheiden:
1. Welcher Link beziehungsweise Dateiname liegt vor?
2. Welchen Inhalt erreiche ich darüber?
### Symbolischen Link ansehen
```
ls -l notizen-link
```
Ein symbolischer Link wird beispielsweise so dargestellt:
```
notizen-link -> notizen.txt
```
Für den gespeicherten Zielpfad kannst du zusätzlich verwenden:
```
readlink notizen-link
```
Die lange Ausgabe von `ls` beschreibt hier den Link selbst. Mit `-L` kannst du stattdessen die Eigenschaften des Ziels anzeigen lassen:
```
ls -lL notizen-link
```
Das funktioniert nur, wenn das Ziel erreichbar ist.
### Den Inhalt über einen Link lesen
```
cat notizen-link
less notizen-link
head notizen-link
```
Beim gewöhnlichen Öffnen eines symbolischen Links wird dessen Ziel gelesen. Zeigt er auf eine Textdatei, siehst du also deren Inhalt – nicht den gespeicherten Linkpfad. Ist das Ziel nicht vorhanden oder nicht zugänglich, schlägt der Zugriff fehl.
### Harte Links erkennen
```
ls -li original.txt weiterer-name.txt
```
Harte Links auf dieselbe Datei besitzen innerhalb desselben Dateisystems dieselbe Inode-Nummer. Über beide Namen erreichst du denselben Dateiinhalt.
Speicherbelegung mit `du` ermitteln
-----------------------------------
`du` steht für „disk usage“ und ermittelt die Speicherbelegung von Dateien und Verzeichnisbäumen.
Für eine zusammengefasste, gut lesbare Ausgabe:
```
du -sh ~/Dokumente
```
Dabei bedeutet:
- `-s`: Nur die Gesamtsumme für das angegebene Argument ausgeben.
- `-h`: Größen in lesbaren Einheiten darstellen.[[gnu](https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html)]
### Mehrere Verzeichnisse vergleichen
```
du -sh ~/Dokumente ~/Bilder ~/Projekte
```
So erhältst du für jeden angegebenen Pfad eine eigene Summe.
### Eine Ebene genauer hinsehen
```
du -h --max-depth=1 ~/Projekte
```
`du` zeigt damit die Summen der unmittelbar enthaltenen Unterverzeichnisse und die Gesamtsumme des Startverzeichnisses. Tiefer liegende Inhalte werden weiterhin mitgerechnet, nur nicht einzeln ausgegeben. Versteckte Unterverzeichnisse werden ebenfalls berücksichtigt.
### Große Bereiche zuerst anzeigen
```
du -h --max-depth=1 ~/Projekte | sort -hr
```
`sort -h` sortiert Größenangaben mit Einheiten, `-r` kehrt die Reihenfolge um. Die Gesamtsumme des Startverzeichnisses steht dabei gewöhnlich ebenfalls weit oben.
Bei fehlenden Leserechten kann `du` Teile des Verzeichnisbaums nicht vollständig untersuchen. Achte deshalb auf Fehlermeldungen, bevor du die Ausgabe als vollständige Übersicht interpretierst.
Warum zeigen `ls` und `du` unterschiedliche Größen?
---------------------------------------------------
Beide Werkzeuge beantworten unterschiedliche Fragen:
| Werkzeug | Typische Aussage |
|---|---|
| `ls -l datei` | Wie groß ist der logische Dateiinhalt in Bytes? |
| `du datei` | Wie viel Speicher wird der Datei vom Dateisystem zugerechnet? |
| `du -sh verzeichnis` | Wie viel Speicher belegt der untersuchte Verzeichnisbaum insgesamt? |
Eine winzige Textdatei kann wegen der Speicherzuweisung des Dateisystems mehr Platz belegen als ihr Inhalt lang ist. Umgekehrt können sogenannte Sparse-Dateien große logische Bereiche enthalten, für die keine entsprechenden Datenblöcke belegt sind.
Wenn du bei `du` die logischen Größen statt der belegten Blöcke betrachten möchtest:
```
du -sh --apparent-size ~/Projekte
```
Das ist eine andere Messgröße, nicht einfach eine „genauere“ Variante der gewöhnlichen Speicherbelegung.
### Wie behandelt `du` Links?
Standardmäßig folgt `du` symbolischen Links nicht. Mit `-L` kannst du deren Ziele einbeziehen:
```
du -shL verzeichnis-link
```
Dadurch können auch Daten außerhalb des ursprünglich betrachteten Verzeichnisses berücksichtigt werden.
Harte Links auf dieselbe Datei zählt `du` innerhalb eines Aufrufs standardmäßig nur einmal. Das verhindert, dass dieselben Daten allein wegen mehrerer Namen mehrfach in die Summe eingehen.
Welcher Befehl passt zu welcher Frage?
--------------------------------------
| Frage | Befehl |
|---|---|
| Was steht in einer kurzen Textdatei? | `cat datei.txt` |
| Wie lese ich eine längere Datei bequem? | `less datei.txt` |
| Wie blättere ich mit einem einfachen Pager? | `more datei.txt` |
| Wie beginnt die Datei? | `head datei.txt` |
| Wie endet die Datei? | `tail datei.txt` |
| Was wird gerade angehängt? | `tail -f datei.log` |
| Welche Einträge liegen im Verzeichnis? | `ls -lah verzeichnis/` |
| Wie groß ist der Dateiinhalt? | `ls -lh datei` |
| Wie viel Speicher belegt ein Verzeichnisbaum? | `du -sh verzeichnis/` |
Die Werkzeuge ergänzen sich: Dateiinhalte lesen, Verzeichniseinträge betrachten und Speicherbelegung messen sind unterschiedliche Aufgaben.
Fazit: Erst die passende Frage stellen
--------------------------------------
Für kurze Texte reicht `cat`, für längeres Lesen bietet sich `less` an. `head` und `tail` begrenzen die Ausgabe auf relevante Ausschnitte. Mit `ls` prüfst du Namen und Eigenschaften; mit `du` untersuchst du die Speicherbelegung ganzer Strukturen.
Besonders wichtig sind zwei Unterscheidungen: Ein Link ist nicht dasselbe wie sein Ziel, und die logische Dateigröße ist nicht automatisch die tatsächlich belegte Speichermenge.
Inhalte und Größen unter Linux einsehen: Dateien, Links und Verzeichnisse verstehen
Submitted 18 hours ago by
blog@andreas-moor.de to random@mbin.linuxnation.social
https://andreas-moor.de/?p=77763