Du (Unix)
# Du (Unix)

Das Unix-Programm du (von englisch disk usage, deutsch etwa (Fest-)Plattennutzung oder -belegung) wird zur Anzeige der Dateigrößen aller Elemente im aktuellen Verzeichnis genutzt. Es ist Teil des POSIX-Standards für Unix- und Unix-artigen Systeme. Eine erweiterte Version findet sich in den GNU coreutils, wie sie z. B. unter Linux genutzt werden.

## Geschichte

Die erste Version von du erschien in Version 1 von AT&T-UNIX.

## Wichtige Argumente

Das Argument kann eine Pfadangabe sein, ansonsten wird das aktuelle Verzeichnis als Ausgangspunkt verwendet. Die POSIX-konformen Kommandozeilenparameter orientierten sich ursprünglich an UNIX System V und wurden im POSIX-Standard IEEE 1003.1 mit BSD-Entwicklungen erweitert; gem. POSIX-Standard von 2003 werden folgende Parameter unterstützt:

* -a zeigt auch alle Dateien und nicht nur die Summe der Blöcke pro Verzeichnis.
* -H zeigt, wenn als Argument eine symbolische Verknüpfung angegeben ist, die Größen des Verknüpfungsziels an, nicht die Größe der symbolischen Verknüpfung selbst.
* -k erzwingt die Ausgabe von 1024-Byte-Blöcken, wie es bei BSD-Unix der Standard ist. Der POSIX-Standard sind Blöcke à 512 Bytes wie in System V.
* -L zeigt bei symbolischen Verknüpfungen die Größen der Ziele an, nicht die der Verknüpfung selbst.
* -s gibt nur die Summe aller Blöcke im angegebenen Pfad aus.
* -x bewirkt, dass nur die Dateigrößen auf dem aktuellen Gerät im angegebenen Ausgangspfad berechnet werden (englisch same device). Damit lässt sich verhindern, dass auch in Verzeichnisse eingehängte Dateisysteme verarbeitet werden.

Typische Parameter, die nur in der GNU-Version vorkommen und daher nicht POSIX-kompatibel sind:

* --apparent-size zeigt sichtbare Größe an (sehr kleine Textdateien können auf dem Dateisystem wegen der minimalen Blockgröße größer als die tatsächliche Datenmenge sein, und z. B. auf komprimierten Dateisystemen kann die sichtbare Größe größer als die tatsächlich belegte Speichermenge sein)
* -b zeigt die Dateigrößen statt in Kilobyte in Byte an. (GNU-spezifisch)
* -c zeigt am Ende der Ausgabe die Gesamtgröße an.
* -h zeigt die Größen „menschenlesbar“, also in Megabyte, Gigabyte... statt in manchmal sehr hohen Kilobyte-Zahlen an.
* -s zeigt nur die Summe aller Dateigrößen an, nicht die einzelnen Elemente.
* --si nutzt SI-Größen (Ein Kilobyte = 1000 Byte), also nicht KiB (= 1024 Byte), MiB...
* --time zeigt die Zeit der letzten Änderung an.

## Beispiele der GNU-Version

Zeige alle Dateien, auch in Unterverzeichnissen, in menschenlesbarer Größe an:

Zeige alle Dateien, auch in Unterverzeichnissen, in Kilobyte an sowie den Zeitpunkt der letzten Änderung:

Zeige alle Dateien, auch in Unterverzeichnissen an, und zwar in SI-Einheiten (vergleiche erstes Beispiel) und in der sichtbaren Größe:

