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, -T
anahtarı 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 -P
anahtarı kullanın df
):
$ df -PT test | awk 'NR==2 {print $2}'
ext4
Böylece bu değeri aşağıdaki gibi bir if
yapı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), stat
komutu 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
-f
stat
dosya yerine dosya sistemi hakkında bilgi vermeyi söyler -c %T
ve çı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
findmnt
noktası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, --noheading
ve listelenecek sütunları seçin:-o, --output
df
from 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!