Para obtener la salida de df
para mostrar los datos en kb solo necesita usar el -k
bandera:
df -k
Además, si especifica un sistema de archivos para df
, obtendrá los valores para ese específico, en lugar de todos ellos:
df -k /example
Con respecto al cuerpo de su pregunta:desea extraer la cantidad de espacio libre en disco en un sistema de archivos determinado. Esto requerirá algún procesamiento.
Dado un df -k
normal salida:
$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
Puedes obtener el Available
(cuarta columna) por ejemplo con awk
o cut
(anteriormente canalizado a tr
a squeeze-repeats
(-s
) para espacios):
$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
Como siempre, si desea almacenar el resultado en una variable, use el var=$(command)
sintaxis como esta:
$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
Además, según el comentario de Tim Bunce, puede manejar nombres de sistemas de archivos largos usando --direct
para obtener un -
en cambio, para que no imprima una línea que rompa el motor:
$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
Puede usar el comando stat(2) para mostrar bloques libres y también para averiguar qué tan grande es cada bloque, por ejemplo,
stat -f --printf="%a %s\n" /
mostrará el número de bloques libres (%a) en un sistema de archivos determinado (/) seguido del tamaño del bloque (%s). Para obtener el tamaño en kB, puede usar el comando bc(1) como en el siguiente ejemplo:
stat -f --printf="%a * %s / 1024\n" / | bc
Finalmente, poner esto en una variable es solo una cuestión de usar la sustitución de acento grave (o $() como en la primera respuesta):
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`