Gostaria de verificar, em um script bash, em que tipo de sistema de arquivos é um diretório.
A ideia é algo como
if [path] is on a [filesystem] filesystem then
filesystem specific command
end if
linux
bash
shell-script
filesystems
Dremor
fonte
fonte
Respostas:
Use
df
. Você pode passar um caminho para ele, e ele fornecerá as informações do sistema de arquivos para esse caminho. Se você precisar do tipo de sistema de arquivos, use o-T
switch da seguinte maneira:Para extrair o tipo de sistema de arquivos, você pode analisá-lo (use a
-P
opção para evitardf
quebras de linhas se a parte do dispositivo for muito longa):Então você pode usar esse valor em uma
if
construção como esta:Lembre-se de que a coluna do dispositivo pode conter espaços (mas é raro); nesse caso, a análise falhará.
fonte
Em um sistema com o comando stat GNU instalado (como em qualquer distribuição Linux padrão), é possível obter o tipo fs para um determinado arquivo sem exigir nenhuma análise usando o
stat
comando:-f
informastat
para fornecer informações sobre o sistema de arquivos em vez do arquivo e-c %T
define o formato de saída para incluir apenas o tipo de sistema de arquivos legível por humanos (%T
).Então você pode usar isso (no bash) como:
man stat
fornecerá mais informações.fonte
Com
findmnt
(parte deutil-linux
):Ao usar a opção
se o caminho não for um arquivo ou diretório de ponto de montagem,findmnt
verifique os elementos do caminho na ordem inversa para obter o ponto de montagem. As outras duas opções suprimem a linha do cabeçalho:-n, --noheading
e selecione a (s) coluna (s) a serem listadas:-o, --output
df
fromcoreutils
tem uma opção semelhante--output=
para imprimir apenas determinados campos, comofstype
por exemplo:não há opção para remover o cabeçalho, então você terá que canalizar a saída para, por exemplo
| sed 1d
fonte
findmnt
ferramenta atraente , mesmo com saída TUI de desenho de linha. Obrigado!