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
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
Yanıtlar:
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.
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.
İle findmnt(parçası util-linux):
findmnt -no fstype -T /path/to/file
Seçeneği kullanırken
-T, --hedef yoluyol 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!