Me gustaría comprobar, en un script bash, qué tipo de sistema de archivos es un directorio.
La idea es algo como
if [path] is on a [filesystem] filesystem then
filesystem specific command
end if
linux
bash
shell-script
filesystems
Sueño
fuente
fuente
Respuestas:
Uso
df
. Puede pasarle una ruta y le dará la información del sistema de archivos para esa ruta. Si necesita el tipo de sistema de archivos, use el-T
interruptor, así:Para extraer el tipo de sistema de archivos, puede analizarlo (use el
-P
interruptor para evitardf
romper líneas si la parte del dispositivo es demasiado larga):Entonces puede usar ese valor en una
if
construcción como esta:Tenga en cuenta que la columna del dispositivo puede contener espacios (pero es raro), en cuyo caso el análisis fallará.
fuente
En un sistema con el comando GNU stat instalado (como ocurre con cualquier distribución estándar de Linux), puede obtener el tipo fs para un archivo determinado sin requerir ningún análisis mediante el
stat
comando:-f
le indicastat
que proporcione información sobre el sistema de archivos en lugar del archivo, y-c %T
establece el formato de salida para incluir solo el tipo de sistema de archivos legible por humanos (%T
).Entonces podrías usar eso (en bash) como:
man stat
Proporcionará más información.fuente
Con
findmnt
(parte deutil-linux
):Al usar la opción
si la ruta no es un archivo o directorio de punto de montaje,findmnt
verifica los elementos de la ruta en orden inverso para obtener el punto de montaje. Las otras dos opciones suprimen la línea del encabezado:-n, --noheading
y seleccionan las columnas a enumerar:-o, --output
df
fromcoreutils
tiene una opción similar--output=
para imprimir solo ciertos campos, comofstype
por ejemplo:Sin embargo, no hay ninguna opción para eliminar el encabezado, por lo que tendrá que canalizar la salida a, por ejemplo,
| sed 1d
fuente
findmnt
herramienta linda , incluso con salida TUI de dibujo lineal. ¡Gracias!