Я хотел бы проверить в bash-скрипте, какой тип файловой системы является каталогом.
Идея что-то вроде
if [path] is on a [filesystem] filesystem then
filesystem specific command
end if
linux
bash
shell-script
filesystems
Dremor
источник
источник
Ответы:
Использование
df
. Вы можете передать ему путь, и он даст вам информацию о файловой системе для этого пути. Если вам нужен тип файловой системы, используйте-T
переключатель, например, так:Чтобы извлечь тип файловой системы, вы можете проанализировать его (используйте
-P
переключатель, чтобы избежатьdf
разрывов строк, если часть устройства слишком длинная):Таким образом, вы можете использовать это значение в
if
конструкции следующим образом:Помните, что столбец устройства может содержать пробелы (но это редко), в этом случае синтаксический анализ не удастся.
источник
В системе с установленной командой GNU stat (как и в любом стандартном дистрибутиве Linux) вы можете получить тип fs для данного файла без необходимости синтаксического анализа с помощью
stat
команды:-f
Указываетstat
предоставить информацию о файловой системе вместо файла и-c %T
устанавливает выходной формат, включающий в себя только читаемый человеком тип файловой системы (%T
).Таким образом, вы можете использовать это (в bash) как:
man stat
предоставит больше информации.источник
С
findmnt
(частьutil-linux
):При использовании опции
если путь не является файлом или каталогом точки монтирования,findmnt
проверяет элементы пути в обратном порядке, чтобы получить точку монтирования. Два других параметра подавляют строку заголовка:-n, --noheading
и выбирают столбцы, которые должны быть перечислены:-o, --output
df
fromcoreutils
имеет аналогичную опцию--output=
для печати только определенных полей,fstype
например:однако нет возможности удалить заголовок, так что вам придется передать вывод
| sed 1d
источник
findmnt
инструмент, даже с выводом TUI для рисования линий. Благодарность!