Um die Ausgabe von df
zu erhalten Um die Daten in kb anzuzeigen, müssen Sie nur den -k
verwenden Flagge:
df -k
Auch, wenn Sie ein Dateisystem auf df
angeben , erhalten Sie die Werte für diesen bestimmten anstelle von allen:
df -k /example
In Bezug auf den Hauptteil Ihrer Frage:Sie möchten die Menge an freiem Speicherplatz auf einem bestimmten Dateisystem extrahieren. Dies erfordert einige Verarbeitung.
Bei einem normalen df -k
Ausgabe:
$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
Sie können den Available
erhalten (4. Spalte) zum Beispiel mit awk
oder cut
(früher zu tr
geleitet bis squeeze-repeats
(-s
) für Leerzeichen):
$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
Wenn Sie das Ergebnis in einer Variablen speichern möchten, verwenden Sie wie immer den var=$(command)
Syntax wie folgt:
$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
Aus dem Kommentar von Tim Bunce können Sie auch lange Dateisystemnamen mit --direct
behandeln um einen -
zu erhalten stattdessen, damit es keine Zeile druckt, die die Engine unterbricht:
$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
Sie können den Befehl stat(2) verwenden, um freie Blöcke anzuzeigen und auch herauszufinden, wie groß jeder Block ist, z. B.
stat -f --printf="%a %s\n" /
zeigt die Anzahl der freien Blöcke (%a) auf einem bestimmten Dateisystem (/) gefolgt von einer Blockgröße (%s) an. Um die Größe in kB zu erhalten, können Sie den Befehl bc(1) wie im folgenden Beispiel verwenden:
stat -f --printf="%a * %s / 1024\n" / | bc
Um dies schließlich in eine Variable zu setzen, müssen Sie nur die Backtick-Substitution (oder $() wie in der ersten Antwort) verwenden:
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`