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 -Tprzełą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 -Pprzełą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 ifkonstrukcji:
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ą statkomendy:
stat -f -c %T filename
-fkaże statpodać informacje o systemie plików zamiast pliku i -c %Tustawia 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,
findmntsprawdza elementy ścieżki w odwrotnej kolejności, aby uzyskać punkt montowania. Pozostałe dwie opcje pomijają wiersz nagłówka: -n, --noheadingi wybierz kolumny do wyświetlenia:-o, --output
dffrom coreutilsma podobną opcję --output=drukowania tylko niektórych pól, takich jak fstypenp .:
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
findmntnarzędzie, nawet z wyjściem TUI do rysowania linii. Dzięki!