Yanıtlar:
Çıktı, aşağıdakileri -Psağlayacak olan seçenek kullanılarak ayrıştırmayı biraz daha kolaylaştırabilir :
- Her dosya sistemiyle ilgili bilgiler her zaman tam olarak bir satırda yazdırılır; Bir montaj cihazı asla tek başına bir hatta konmaz. Bu, montaj cihazının adı 20 karakterden uzunsa (örneğin, bazı ağ montajları için) sütunların yanlış hizalanması anlamına gelir.
Bu, sadece mevcut boş alanı elde etmeyi çok daha kolaylaştırır:
$ df -Ph . | tail -1 | awk '{print $4}'
( -hmegabayt, gigabayt vb. kullanır. Sisteminizde yoksa, -ksadece kilobayt kullanın .)
Biz geçersen dfyolunu içeren dosya sistemi hakkında daha sonra bir başlık satırı ve veriler: Bir yol, sadece 2 satır dönmek için gidiyor. Sadece ikinci sırayı almak için kuyruğu kullanabiliriz. Kullanılabilir alanın 4. sütunda olduğunu biliyoruz, bu yüzden onu yakalayacağız awk. Tüm bunlar ile yapılabilir awk:
$ df -Ph . | awk 'NR==2 {print $4}'
veya başka birçok filtre grubu .
$PWDyerine ortam değişkenini kullanarak komutunuzu optimize edebilir ve kuyruk gereksinimini ortadan df -Ph $PWD | awk 'NR==2{print $4}'
awkdaha iyi olduğu konusunda hemfikirim . Uzun komutu ekledim çünkü daha karmaşık bir şey yapmak için nasıl basit bir komut zinciri oluşturabileceğine dair bir örnek vermek istedim. Cevabınızı, geliştirmenizi de içerecek şekilde güncelledim.
-Pstandart ( PPOSIX içindir). Ancak -hbir GNU uzantısıdır (başka sistemlerde de mevcuttur, ancak örneğin OpenBSD'de uyumsuzdur -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 }), hızda anlamlı bir fark olmadığını ortaya çıkarır; bu şaşırtıcı değildir - çağrı tailyapmak pahalı değildir ve awkgirişin sonuna atlamak için ayrılır ... Bir fark olabilir PDP-11 ...
Bayt cinsinden:
df --output=avail -B 1 "$PWD" | tail -n 1
İnsan okunabilir:
df --output=avail -h "$PWD" | tail -n 1
veya
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
veya
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -h?