Odpowiedzi:
Zastosowanie df
. Możesz przekazać mu ścieżkę, a otrzymasz informacje o systemie plików dla tej ścieżki. Jeśli potrzebujesz typu systemu plików, użyj -T
przełącznika:
$ df -T test
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda2 ext4 182634676 32337180 141020160 19% /home
Aby wyodrębnić typ systemu plików, możesz go przeanalizować (użyj -P
przełącznika, aby uniknąć df
łamania linii, jeśli część urządzenia jest zbyt długa):
$ df -PT test | awk 'NR==2 {print $2}'
ext4
Możesz więc użyć tej wartości w takiej if
konstrukcji:
if [ "$(df -PT "$path" | awk 'NR==2 {print $2}')" = "ext4" ] ; then
it is an ext4 filesystem
fi
Uważaj, że kolumna urządzenia może zawierać spacje (ale jest to rzadkie), w takim przypadku analiza nie powiedzie się.
W systemie z zainstalowaną komendą GNU stat (jak całkiem dobrze z każdą standardową dystrybucją Linuksa), możesz uzyskać typ fs dla danego pliku bez konieczności parsowania za pomocą stat
komendy:
stat -f -c %T filename
-f
każe stat
podać informacje o systemie plików zamiast pliku i -c %T
ustawia format wyjściowy tak, aby zawierał tylko typ systemu plików czytelny dla człowieka ( %T
).
Więc możesz użyć tego (w bash) jako:
if [[ $(stat -f -c %T filename) == ext4 ]]; then
# ext4 specific command
fi
man stat
dostarczy więcej informacji.
Z findmnt
(częścią util-linux
):
findmnt -no fstype -T /path/to/file
Podczas korzystania z opcji
-T, - ścieżka docelowajeśli ścieżka nie jest plikiem lub katalogiem punktu montowania,
findmnt
sprawdza elementy ścieżki w odwrotnej kolejności, aby uzyskać punkt montowania. Pozostałe dwie opcje pomijają wiersz nagłówka: -n, --noheading
i wybierz kolumny do wyświetlenia:-o, --output
df
from coreutils
ma podobną opcję --output=
drukowania tylko niektórych pól, takich jak fstype
np .:
df --output=fstype /path/to/file
nie ma opcji, aby usunąć nagłówek, więc będziesz musiał przesłać dane wyjściowe do np | sed 1d
findmnt
narzędzie, nawet z wyjściem TUI do rysowania linii. Dzięki!