Můžete použít awk,
df | awk '$1=="/dev/sda"{print $4}'
Přenosně:
df -P /dev/sda1 | awk 'NR==2 {print $4}'
-P
volba zajišťuje, že df
vytiskne výstup v očekávaném formátu a zejména nepřeruší řádek za názvem zařízení, i když je dlouhý. Předání názvu zařízení jako argumentu df
odstraňuje všechna nebezpečí vyplývající z analýzy, jako je získávání informací pro /dev/sda10
když zadáváte dotaz /dev/sda1
. df -P
vytiskne pouze dva řádky, řádek záhlaví (který ignorujete) a jeden datový řádek, kde vytisknete požadovaný sloupec.
Existuje riziko, že df
zobrazí název zařízení obsahující mezery, například pokud je svazek připojen podle názvu a název obsahuje mezery, nebo pro svazek NFS, jehož vzdálený bod připojení obsahuje mezery. V tomto případě neexistuje žádný plně přenosný způsob, jak analyzovat výstup df
. Pokud jste si jisti, že df
zobrazí přesný název zařízení, který mu předáte (není to vždy případ), můžete jej odstranit:
df -P -- "$device" | awk -vn=${#device} 'NR==2 {$0 = substr($0, n+1); print $3}'
Můžete použít awk
df | grep sda | awk '{print $4}'