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-Tinterruptor, así:Para extraer el tipo de sistema de archivos, puede analizarlo (use el
-Pinterruptor para evitardfromper líneas si la parte del dispositivo es demasiado larga):Entonces puede usar ese valor en una
ifconstrucció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
statcomando:-fle indicastatque proporcione información sobre el sistema de archivos en lugar del archivo, y-c %Testablece 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 statProporcionará 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,findmntverifica 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, --noheadingy seleccionan las columnas a enumerar:-o, --outputdffromcoreutilstiene una opción similar--output=para imprimir solo ciertos campos, comofstypepor ejemplo:Sin embargo, no hay ninguna opción para eliminar el encabezado, por lo que tendrá que canalizar la salida a, por ejemplo,
| sed 1dfuente
findmntherramienta linda , incluso con salida TUI de dibujo lineal. ¡Gracias!