Jawaban:
Output dapat dibuat sedikit lebih mudah untuk diurai dengan menggunakan -Popsi yang akan memastikan bahwa:
- Informasi tentang setiap sistem file selalu dicetak tepat pada satu baris; perangkat mount tidak pernah diletakkan pada garis dengan sendirinya. Ini berarti bahwa jika nama perangkat pemasangan lebih dari 20 karakter (mis., Untuk beberapa pemasangan jaringan), kolom tidak selaras.
Ini membuatnya lebih mudah untuk mendapatkan ruang kosong yang tersedia:
$ df -Ph . | tail -1 | awk '{print $4}'
( -hmenggunakan megabita, gigabita dan sebagainya. Jika sistem Anda tidak memilikinya, gunakan -kuntuk kilobyte saja.)
Jika kita melewati dfjalur, itu hanya akan mengembalikan 2 baris: baris header dan kemudian data tentang sistem file yang berisi jalur. Kita bisa menggunakan ekor untuk mengambil hanya baris kedua. Kami tahu bahwa ruang yang tersedia ada di kolom ke-4, jadi kami ambil dengan awk. Ini semua bisa dilakukan dengan awk:
$ df -Ph . | awk 'NR==2 {print $4}'
atau banyak set filter lainnya .
$PWDalih-alih menggunakan substitusi perintah dan menghilangkan kebutuhan untuk ekor: df -Ph $PWD | awk 'NR==2{print $4}'
awklebih baik. Saya memasukkan perintah yang lebih panjang karena saya ingin memiliki contoh bagaimana seseorang dapat membangun rangkaian perintah sederhana untuk melakukan sesuatu yang lebih rumit. Saya telah memperbarui jawaban untuk menyertakan peningkatan Anda.
-Padalah standar ( Puntuk POSIX). Tetapi -hekstensi GNU (juga ada pada beberapa sistem lain, tetapi misalnya pada OpenBSD tidak kompatibel dengan -P).
df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) mengungkapkan tidak ada perbedaan berarti dalam kecepatan, yang tidak mengejutkan - memohon tailtidak mahal dan awkakan terhindar untuk melompat ke akhir input ... Mungkin ada perbedaan pada PDP-11 ...
Dalam byte:
df --output=avail -B 1 "$PWD" | tail -n 1
Dapat dibaca manusia:
df --output=avail -h "$PWD" | tail -n 1
atau
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
atau
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -h?