Antworten:
Die Ausgabe kann durch die Verwendung der folgenden -P
Option etwas einfacher analysiert werden :
- Die Informationen zu jedem Dateisystem werden immer in genau einer Zeile gedruckt. Ein Mount-Gerät wird niemals von alleine in eine Leitung geschaltet. Dies bedeutet, dass die Spalten falsch ausgerichtet sind, wenn der Mount-Gerätename länger als 20 Zeichen ist (z. B. für einige Netzwerkmounts).
Dadurch wird es viel einfacher, nur den verfügbaren Speicherplatz abzurufen:
$ df -Ph . | tail -1 | awk '{print $4}'
( -h
Verwendet Megabyte, Gigabyte usw. Wenn Ihr System nicht über sie verfügt, verwenden Sie sie nur -k
für Kilobyte.)
Wenn wir df
einen Pfad übergeben, werden nur zwei Zeilen zurückgegeben: eine Kopfzeile und dann die Daten über das Dateisystem, das den Pfad enthält. Wir können den Schwanz benutzen, um nur die zweite Reihe zu ergreifen. Wir wissen, dass der verfügbare Platz in der 4. Spalte ist, also greifen wir zu awk
. Dies alles könnte getan werden mit awk
:
$ df -Ph . | awk 'NR==2 {print $4}'
oder viele andere Filtersätze .
$PWD
anstatt die Befehlsersetzung zu verwenden und das Ende zu entfernen: df -Ph $PWD | awk 'NR==2{print $4}'
awk
besser ist. Ich habe den längeren Befehl eingefügt, weil ich ein Beispiel haben wollte, wie man eine Kette einfacher Befehle erstellen kann, um etwas Komplizierteres zu tun. Ich habe die Antwort aktualisiert, um Ihre Verbesserung einzuschließen.
-P
ist Standard (das P
ist für POSIX). Ist -h
aber eine GNU-Erweiterung (auch auf einigen anderen Systemen vorhanden, aber zB unter OpenBSD ist sie nicht kompatibel -P
).
df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }
) zeigt keinen bedeutenden Geschwindigkeitsunterschied, was nicht verwunderlich ist - Aufrufen tail
ist nicht teuer und awk
erspart das Überspringen bis zum Ende der Eingabe ... Möglicherweise ist ein Unterschied aufgetreten die PDP-11 ...
Wie wäre es damit df -h .
. Dadurch erhalten Sie den verfügbaren freien Speicherplatz der Partition, in der sich Ihr aktuelles Arbeitsverzeichnis befindet.
Ein kleines Beispiel:
/usr/local/nagios/libexec # df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-lvol1
9.9G 6.1G 3.4G 65% /
In Bytes:
df --output=avail -B 1 "$PWD" | tail -n 1
Für Menschen lesbar:
df --output=avail -h "$PWD" | tail -n 1
oder
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
oder
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -h
?