Saya ingin memeriksa, dalam skrip bash, pada tipe filesystem apa sebuah direktori.
Idenya adalah sesuatu seperti
if [path] is on a [filesystem] filesystem then
filesystem specific command
end if
linux
bash
shell-script
filesystems
Dremor
sumber
sumber
Jawaban:
Gunakan
df
. Anda dapat melewatinya lintasan, dan itu akan memberi Anda informasi sistem file untuk lintasan itu. Jika Anda memerlukan tipe sistem file, gunakan-T
switch, seperti:Untuk mengekstrak jenis sistem file, Anda dapat menguraikannya (gunakan
-P
sakelar untuk menghindaridf
terputusnya jalur jika bagian perangkat terlalu panjang):Jadi Anda bisa menggunakan nilai itu dalam
if
konstruk seperti:Berhati-hatilah karena kolom perangkat dapat berisi spasi (tetapi jarang), dalam hal ini penguraian akan gagal.
sumber
Pada sistem dengan perintah stat GNU terinstal (seperti halnya dengan semua distro Linux standar), Anda bisa mendapatkan jenis fs untuk file yang diberikan tanpa memerlukan penguraian menggunakan
stat
perintah:-f
memberitahustat
untuk memberikan informasi tentang sistem file dan bukan file, dan-c %T
mengatur format output untuk menyertakan hanya tipe sistem file yang dapat dibaca manusia (%T
).Jadi Anda bisa menggunakannya (dalam bash) sebagai:
man stat
akan memberikan informasi lebih lanjut.sumber
Dengan
findmnt
(bagian dariutil-linux
):Saat menggunakan opsi
jika path bukan file atau direktori mountpoint,findmnt
periksa elemen path dalam urutan terbalik untuk mendapatkan mountpoint. Dua opsi lainnya menekan baris header:-n, --noheading
dan pilih kolom yang akan dicantumkan:-o, --output
df
daricoreutils
memiliki opsi serupa--output=
untuk hanya mencetak bidang tertentu, sepertifstype
misalnya:tidak ada opsi untuk menghapus header, jadi Anda harus mem-pipe output ke mis
| sed 1d
sumber
findmnt
Alat yang lucu , bahkan dengan output TUI garis-gambar. Terima kasih!