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`