Puedes usar awk,
df | awk '$1=="/dev/sda"{print $4}'
Portabilidad:
df -P /dev/sda1 | awk 'NR==2 {print $4}'
El -P
opción asegura que df
imprimirá la salida en el formato esperado y, en particular, no romperá la línea después del nombre del dispositivo, incluso si es largo. Pasar el nombre del dispositivo como argumento a df
elimina cualquier peligro del análisis, como obtener información para /dev/sda10
cuando estás consultando /dev/sda1
. df -P
simplemente imprime dos líneas, la línea del encabezado (que ignora) y la línea de datos donde imprime la columna deseada.
Existe el riesgo de que df
mostrará un nombre de dispositivo que contiene espacios, por ejemplo, si el volumen está montado por nombre y el nombre contiene espacios, o para un volumen NFS cuyo punto de montaje remoto contiene espacios. En este caso, no hay una forma totalmente portátil de analizar la salida de df
. Si está seguro de que df
mostrará el nombre exacto del dispositivo que le pasa (no siempre es así), puede eliminarlo:
df -P -- "$device" | awk -vn=${#device} 'NR==2 {$0 = substr($0, n+1); print $3}'
Puedes usar un awk
df | grep sda | awk '{print $4}'