Untuk mendapatkan output dari df untuk menampilkan data dalam kb anda hanya perlu menggunakan -k bendera:
df -k
Juga, jika Anda menentukan sistem file ke df , Anda akan mendapatkan nilai untuk spesifik itu, bukan semuanya:
df -k /example
Mengenai isi pertanyaan Anda:Anda ingin mengekstrak jumlah ruang disk kosong pada sistem file tertentu. Ini akan membutuhkan beberapa pemrosesan.
Diberikan df -k normal keluaran:
$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
Anda bisa mendapatkan Available (kolom ke-4) misalnya dengan awk atau cut (sebelumnya disalurkan ke tr ke squeeze-repeats (-s ) untuk spasi):
$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
Seperti biasa, jika Anda ingin menyimpan hasilnya dalam sebuah variabel, gunakan var=$(command) sintaks seperti ini:
$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
Juga, dari komentar Tim Bunce Anda dapat menangani nama sistem file yang panjang menggunakan --direct untuk mendapatkan - sebagai gantinya, agar tidak mencetak baris yang merusak mesin:
$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
Anda dapat menggunakan perintah stat(2) untuk menampilkan blok kosong dan juga untuk mengetahui seberapa besar setiap blok, mis.
stat -f --printf="%a %s\n" /
akan menampilkan jumlah blok bebas (%a) pada sistem berkas tertentu (/) diikuti dengan ukuran blok (%s). Untuk mendapatkan ukuran dalam kB, Anda dapat menggunakan perintah bc(1) seperti pada contoh berikut:
stat -f --printf="%a * %s / 1024\n" / | bc
Akhirnya, untuk memasukkan ini ke dalam variabel hanyalah masalah menggunakan substitusi backtick (atau $() seperti pada jawaban pertama):
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`