Risposte:
L'output può essere reso un po 'più semplice da analizzare utilizzando l' -Popzione che garantirà che:
- Le informazioni su ciascun file system sono sempre stampate esattamente su una riga; un dispositivo di montaggio non viene mai messo in linea da solo. Ciò significa che se il nome del dispositivo di montaggio è più lungo di 20 caratteri (ad es. Per alcuni supporti di rete), le colonne non sono allineate.
Questo rende molto più semplice ottenere solo lo spazio libero disponibile:
$ df -Ph . | tail -1 | awk '{print $4}'
( -hutilizza megabyte, gigabyte e così via. Se il sistema non lo possiede, utilizzare -ksolo per kilobyte.)
Se passiamo dfun percorso, restituirà solo 2 righe: una riga di intestazione e quindi i dati sul file system che contiene il percorso. Possiamo usare la coda per afferrare solo la seconda fila. Sappiamo che lo spazio disponibile è nella quarta colonna, quindi lo afferriamo con awk. Tutto ciò potrebbe essere fatto con awk:
$ df -Ph . | awk 'NR==2 {print $4}'
o molti altri set di filtri .
$PWDinvece di usare la sostituzione dei comandi e rimuovere la necessità di coda: df -Ph $PWD | awk 'NR==2{print $4}'
awkmeglio è meglio. Ho incluso il comando più lungo perché volevo avere un esempio di come si possa costruire una catena di comandi semplici per fare qualcosa di più complicato. Ho aggiornato la risposta per includere il tuo miglioramento.
-Pè standard ( Pè per POSIX). Ma -hè un'estensione GNU (esistente anche su alcuni altri sistemi, ma ad esempio su OpenBSD è incompatibile con -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 }) non rivela alcuna differenza significativa nella velocità, il che non è sorprendente - invocare tailnon è costoso e awksarà risparmiato per saltare fino alla fine dell'ingresso ... Potrebbe esserci stata una differenza su il PDP-11 ...
Che ne dici di fare df -h .. Questo ti darà lo spazio disponibile disponibile della partizione in cui si trova la tua directory di lavoro corrente.
Un piccolo esempio:
/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 byte:
df --output=avail -B 1 "$PWD" | tail -n 1
Leggibile dagli umani:
df --output=avail -h "$PWD" | tail -n 1
o
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
o
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -h?