Puedo hacer df .para obtener parte de la información sobre el montaje en el que se encuentra el directorio actual, y puedo obtener toda la información que quiero mount, pero obtener mucha información (información sobre otras monturas). Puedo agotarlo, pero me pregunto si hay una mejor manera.
¿Hay algún comando mountinfotal que mountinfo .proporcione la información que quiero (como df ., pero con la información que mountproporciona)?
Estoy usando Debian Gnu + Linux.
filesystems
mount
disk-usage
ctrl-alt-delor
fuente
fuente

statcomando también se puede usar. Sin embargo, no estoy seguro si la%mopción que proporciona el punto de montaje es compatible con su versión del sistema. Revisé mi sistema y parecía no devolver el punto de montaje.stat "--printf=%m\n" .obtiene el punto de montaje del sistema de archivos en el que se encuentra el directorio actual. De este modo, podemos simplificar algunas de las respuestas. Gracias.Respuestas:
Creo que quieres algo como esto:
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. Puede imprimir solo ciertos campos mediante-o, --output [list].Consulte
findmnt --helpla lista de campos disponibles.Alternativamente, puede ejecutar:
El problema con el que te encuentras es que todos los caminos son relativos a algo u otro, por lo que solo tienes que caminar por el árbol. Cada vez.
findmntes miembro del paquete util-linux y lo ha sido durante algunos años. Por ahora, independientemente de su distribución, ya debería estar instalada en su máquina Linux si también tiene lamountherramienta.findmntimprimirá la información de todos los montajes sin un argumento de punto de montaje, y solo eso para su argumento con uno. La-Des la opción de emulacióndf. Sin-Dsu salida es similar a la demount's, pero mucho más configurable. Intentafindmnt --helpver por ti mismo.Lo pego en un subshell para que el directorio actual del shell actual no cambie.
Entonces:
SALIDA
Si no tiene la
-Dopción disponible (no en versiones anteriores de util-linux) , nunca debe temer, en cualquier caso, es poco más que un interruptor de conveniencia. Observe los encabezados de columna que produce para cada llamada; puede incluirlos o excluirlos para cada invocación con el-oconmutador de utput. Puedo obtener el mismo resultado que-Dpodría proporcionar como:SALIDA
fuente
-D, no tengo esa opción. (Estoy en Debian7, util-linux 2.20.1-5.3)df, estoy dispuesto a apostar que lo hace, simplemente no tiene que decirle que lo haga.findmnt $(stat "--printf=%m\n" .)findmnttiene una-Topción que puede evitar elcd ..bucle. Puede ser útil para alguien más.La forma de Linux / Unix es tener una caja de herramientas de pequeñas utilidades que, cuando se combinan, le brindan los resultados que busca.
Tienden a no tener una utilidad para cada ocasión. En cambio, tiene muchas pequeñas utilidades útiles que se combinan con tuberías, etc. La ventaja de esto es que puede escribir su propia utilidad con bastante facilidad si no hay ninguna disponible.
Por ejemplo, para obtener la información que busca, puede usar:
Si desea reutilizar lo anterior con diferentes directorios, cree un script:
Guárdelo como
mountinfoy hágalo ejecutable (chmod +x mountinfo). Luego puede usarlo como:Si desea un sistema que tenga una utilidad para todo lo que no interactúa entre sí, entonces cierto Sr. Gates puede ayudarlo ;-)
fuente
--outputsolo existe en versiones muy recientes de GNU coreutils (≥8.22).mountsin opciones parece un poco pensado: con las opciones creas puntos de montaje, sin que los enumere, esperaba una mejor herramienta de lista. Como vemos, @mikeserv nos lo ha mostradofindmnt.Puede ser un poco complicado si los puntos de montaje contienen espacios en blanco, pero esto debería funcionar, excepto en los casos en que los puntos de montaje contengan nuevas líneas:
df -Pgenera una línea para el sistema de archivos; sin esa opción,dfpuede generar dos líneas si el punto de montaje es largo. El nombre del punto de montaje comienza en la misma columna que la etiqueta "Montado en" en la línea del encabezado.Después de obtener el punto de montaje, lo buscamos en la salida de
mount.fuente
No conozco un comando, pero podrías crear una función. Puede agregar lo siguiente a su
.bashrc:Esto ejecuta el
mountcomando y pasa la salida agrep.grepbuscará el resultado dedf -P "$1" | tail -n 1 | awk '{print $1}'y desglosarlo:df -P "$1"se ejecutarádfen el argumento pasado a la función,tail -n 1solo mostrará la segunda línea, la que contiene lapartitioninformación.awk '{print $1}'imprimirá la primera parte de esa línea, que es el número de disco / partición, por ejemplo/dev/sda5. Eso es logrepque buscará en el comando mount y lo generará.Obtenga su
.bashrcarchivo para aplicar los cambios, o cierre la sesión y vuelva a iniciarla.Ahora, si ejecuta
mountinfo ., obtendrá la salida que desea.fuente
mountsin opciones parece un poco un pensamiento posterior: con las opciones de crear puntos de montaje, sin que los enumere, esperaba una mejor herramienta de lista. Como vemos, @mikeserv nos lo ha mostradofindmnt.Si usa una versión no completamente antigua de GNU coreutils df, entonces
echo $(df . --output=target | tail -n 1)funciona. Del mismo modostat -c '%m' ., aunque observo que https://linux.die.net/man/1/stat carece de documentación de la%mopción de formato.Hacer esto de forma portátil es agotador: ninguno de los anteriores funcionará con las versiones BSD o Cygwin de stat o df. Si no fuera por la posibilidad de espacios en las rutas de los puntos de montaje,
df -P . | tail -1 | awk '{ print $NF}'sería bueno, pero a menudo las unidades flash USB tienen espacios en el nombre del volumen, que probablemente aparecerán en la ruta de montaje y lo romperán. Para la portabilidad, Perl es instalable prácticamente en todas partes y CPAN tiene el módulo Sys :: Filesystem :: MountPoint que proporciona la funcionalidad deseada.fuente
echo $()agrega al comando?