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 mountinfo
tal que mountinfo .
proporcione la información que quiero (como df .
, pero con la información que mount
proporciona)?
Estoy usando Debian Gnu + Linux.
filesystems
mount
disk-usage
ctrl-alt-delor
fuente
fuente
stat
comando también se puede usar. Sin embargo, no estoy seguro si la%m
opció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,findmnt
verifica 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 --help
la 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.
findmnt
es 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 lamount
herramienta.findmnt
imprimirá la información de todos los montajes sin un argumento de punto de montaje, y solo eso para su argumento con uno. La-D
es la opción de emulacióndf
. Sin-D
su salida es similar a la demount
's, pero mucho más configurable. Intentafindmnt --help
ver por ti mismo.Lo pego en un subshell para que el directorio actual del shell actual no cambie.
Entonces:
SALIDA
Si no tiene la
-D
opció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-o
conmutador de utput. Puedo obtener el mismo resultado que-D
podrí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" .)
findmnt
tiene una-T
opció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
mountinfo
y 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
--output
solo existe en versiones muy recientes de GNU coreutils (≥8.22).mount
sin 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 -P
genera una línea para el sistema de archivos; sin esa opción,df
puede 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
mount
comando y pasa la salida agrep
.grep
buscará el resultado dedf -P "$1" | tail -n 1 | awk '{print $1}'
y desglosarlo:df -P "$1"
se ejecutarádf
en el argumento pasado a la función,tail -n 1
solo mostrará la segunda línea, la que contiene lapartition
informació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 logrep
que buscará en el comando mount y lo generará.Obtenga su
.bashrc
archivo para aplicar los cambios, o cierre la sesión y vuelva a iniciarla.Ahora, si ejecuta
mountinfo .
, obtendrá la salida que desea.fuente
mount
sin 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%m
opció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?