bir dosya sisteminin biçimini kontrol etme


11

Bir bash komut dosyasında, bir dizinin hangi dosya sistemi türünde olduğunu kontrol etmek istiyorum.

Fikir şuna benzer

if [path] is on a [filesystem] filesystem then
   filesystem specific command
end if

Bağlama noktasını veya dosya sistemi türünü istiyor musunuz? İstediğiniz çıktı ne olurdu?
terdon

Yanıtlar:


11

Kullanın df. Bir yol iletebilirsiniz ve bu yol size dosya sistemi bilgilerini verecektir. Dosya sistemi türüne ihtiyacınız varsa, -Tanahtarı aşağıdaki gibi kullanın :

$ df -T test
Filesystem     Type 1K-blocks     Used Available Use% Mounted on
/dev/sda2      ext4 182634676 32337180 141020160  19% /home

Dosya sistemi türünü ayıklamak için ayrıştırabilirsiniz ( aygıt kısmı çok uzunsa satırları kırmamak için -Panahtarı kullanın df):

$ df -PT test | awk 'NR==2 {print $2}'
ext4

Böylece bu değeri aşağıdaki gibi bir ifyapıda kullanabilirsiniz :

if [ "$(df -PT "$path" | awk 'NR==2 {print $2}')" = "ext4" ] ; then
  it is an ext4 filesystem
fi

Aygıt sütununun boşluk içerebileceğine dikkat edin (ancak nadirdir), bu durumda ayrıştırma başarısız olur.


12

GNU stat komutunun yüklü olduğu bir sistemde (herhangi bir standart Linux dağıtımında olduğu gibi), statkomutu kullanarak herhangi bir ayrıştırma işlemine gerek kalmadan belirli bir dosya için fs türünü alabilirsiniz :

stat -f -c %T filename

-fstatdosya yerine dosya sistemi hakkında bilgi vermeyi söyler -c %Tve çıktı biçimini yalnızca insan tarafından okunabilen dosya sistemi türünü ( %T) içerecek şekilde ayarlar .

Yani bunu (bash'da) şöyle kullanabilirsiniz:

if [[ $(stat -f -c %T filename) == ext4 ]]; then
  # ext4 specific command
fi

man stat daha fazla bilgi sağlayacaktır.


3

İle findmnt(parçası util-linux):

findmnt -no fstype -T /path/to/file

Seçeneği kullanırken

-T, --hedef yolu
yol bir bağlama noktası dosyası veya dizini değilse, bağlama findmntnoktasını almak için yol öğelerini ters sırayla denetler. Diğer iki seçenek başlık satırını bastırır: -n, --noheadingve listelenecek sütunları seçin:-o, --output


dffrom coreutils, --output=yalnızca belirli alanları yazdırmak için benzer bir seçeneğe sahiptir , fstypeörneğin:

df --output=fstype /path/to/file

başlığı kaldırmak için herhangi bir seçenek yoktur, bu nedenle çıkışı ör. | sed 1d


findmntÇizgi çizme TUI çıkışı ile bile sevimli bir araç. Teşekkürler!
Incnis Mrsi
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.