Per ottenere l'output di df
per visualizzare i dati in kb basta usare il -k
bandiera:
df -k
Inoltre, se specifichi un filesystem in df
, otterrai i valori per quello specifico, invece di tutti:
df -k /example
Per quanto riguarda il corpo della tua domanda:vuoi estrarre la quantità di spazio libero su disco su un dato filesystem. Ciò richiederà un po' di elaborazione.
Dato un normale df -k
uscita:
$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
Puoi ottenere il Available
(4a colonna) ad esempio con awk
o cut
(precedentemente reindirizzato a tr
a squeeze-repeats
(-s
) per gli spazi):
$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
Come sempre, se vuoi memorizzare il risultato in una variabile, usa var=$(command)
sintassi come questa:
$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
Inoltre, dal commento di Tim Bunce puoi gestire nomi di filesystem lunghi usando --direct
per ottenere un -
invece, in modo che non stampi una riga che rompa il motore:
$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
Puoi utilizzare il comando stat(2) per visualizzare i blocchi liberi e anche per scoprire quanto è grande ciascun blocco, ad es.
stat -f --printf="%a %s\n" /
visualizzerà il numero di blocchi liberi (%a) su un dato file system (/) seguito dalla dimensione del blocco (%s). Per ottenere la dimensione in kB, puoi utilizzare il comando bc(1) come nell'esempio seguente:
stat -f --printf="%a * %s / 1024\n" / | bc
Infine, inserire questo in una variabile è solo questione di usare la sostituzione del backtick (o $() come nella prima risposta):
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`