Bash'deki geçerli dizinde mevcut boş alanı bulun


25

Biliyorum df -hve pwd, ama regex eşleştirme kısmı için biraz karmaşık görünüyor. Herhangi bir fikir?


1
Bunu mu demek istediniz du -h?
jweyrich

Yanıtlar:


45

Çıktı, aşağıdakileri -Psağlayacak olan seçenek kullanılarak ayrıştırmayı biraz daha kolaylaştırabilir :

  1. 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 .


Komutunuzu kullanmak $PWDyerine ortam değişkenini kullanarak komutunuzu optimize edebilir ve kuyruk gereksinimini ortadan df -Ph $PWD | awk 'NR==2{print $4}'
kaldırabilirsiniz

@SiegeX: Hepsini yapmanın 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.
Steven D

-Pstandart ( PPOSIX içindir). Ancak -hbir GNU uzantısıdır (başka sistemlerde de mevcuttur, ancak örneğin OpenBSD'de uyumsuzdur -P).
Gilles 'SO- kötülük'

--Output = avail anahtarını kullanarak bunu olmadan yapabilirsiniz: df -h --output=avail . | tail -1
Floyd

Msgstr "Komutunuzu optimize edebilirsiniz". Pek sayılmaz. Her iki boruyu da 10'000 kez çalıştırmak (olduğu gibi 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 ...
David Tonhofer

10

Peki ya yapmayı df -h .. Bu size mevcut çalışma dizininizdeki bölümün boş alanını verecektir.

Küçük bir örnek:

 /usr/local/nagios/libexec # df -h .
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg00-lvol1
                       9.9G  6.1G  3.4G  65% /

4

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.