mostrar solo discos físicos al usar df y mount

9

Cuando uso dfo mount, sobre todo estoy interesado en particiones de disco físico. Hoy en día, la salida de esos comandos está abrumada por sistemas de archivos temporales y virtuales, cgroups y otras cosas que no me interesan regularmente.

Mis particiones físicas en la salida siempre comienzan con ' /', así que intenté crear alias para dfy mount:

alias df1="df | egrep '^/'"
alias mount1="mount | egrep '^/'"

Eso funciona bien para mount1(aunque muestra el ' /' en rojo), pero a df1veces me gustaría agregar la -hopción dfy no puedo hacerlo df1 -h. Preferiría no tener un alias para cada combinación de opciones que quisiera usar. ¿Realmente tengo que buscar definir funciones en bash (preferiría no hacerlo)? ¿Hay una mejor solución para df1?

yves
fuente

Respuestas:

6

Puede resolver el problema del df1argumento utilizando el siguiente alias:

alias df1='df --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660'

asegúrese de agregar cualquier otro tipo ( xfs, fuseblk(para soporte NTFS moderno, como señaló @Pandya), etc.) que le interese. Con eso puede hacerlo df1 -hy obtener el resultado esperado.

mounttiene una -topción, pero no puede especificarla varias veces (solo se toma la última), allí usaría:

alias mount1="mount | /bin/grep -E '^/'"

Estoy usando grep -Ecomo egrepestá en desuso y /bin/grepse asegura de que no esté usando --colour=autoun alias para grep/egrep

Anthon
fuente
df --type ntfsno muestra la partición de 5 ntfs y, por lo tanto, me los salta como resultado
Pandya
Tengo que usar --type fuseblkpara eso
Pandya
@Pandya, eso es lo que indiqué, debe agregar otros tipos en los que está interesado. No he tenido particiones NTFS en mi sistema durante varios años, por lo que no estoy seguro de dónde vino en el alias que uso .
Anthon
1
Parece que @Pandya --type ntfsestaba en mi alias desde el momento en que hubo un soporte mínimo de NTFS (el momento en que tuvo que hacer una verificación del sistema de archivos en su partición NTFS después de reiniciar en Windows% -)). Actualicé mi respuesta, gracias.
Anthon
3

Puede definir la función de la siguiente manera:

function df1() { df "$@" | grep -E '^/'; }

Salida de ejemplo:

$ df1 -h
/dev/sda8        25G  8.1G   16G  35% /
/dev/sda4        25G   20G  5.8G  78% /media/pandya/Documents+Edu
/dev/sda3       9.5G  7.1G  2.0G  79% /media/pandya/Ext4
/dev/sda7        24G   17G  6.9G  71% /media/pandya/Extra+Other
/dev/sda6        26G   25G  448M  99% /media/pandya/Media+Game
/dev/sda10       15G  7.9G  7.1G  53% /media/pandya/Miscellaneous
/dev/sda5        36G   22G   14G  63% /media/pandya/Software+OS

¡Aquí le $@permite ingresar sus argumentos! [Tenga en cuenta que $@siempre debe escribirse entre comillas dobles a menos que tenga una razón concreta para no hacerlo. -ed]

Pandya
fuente
3

Si cambiar a una dfopción diferente es una opción, pydfúsela, ya que no muestra sistemas de archivos que tengan 0 bloques de manera predeterminada, y tiene un indicador, colores y algunas otras propiedades habilitadas de manera predeterminada. Funciona bastante bien alias df, y el original siempre está disponible usando de \dftodos modos.

Josip Rodin
fuente
Para mí la respuesta más útil aquí. Lamentablemente, esto no existe para mount.
emk2203
Un poco tarde, pero para mí pydf mostró mi disco físico único y 33 / dev / loop ## cuando todo lo que quiero es el disco físico. La respuesta aceptada de df funciona, pero prefiero este formulario en su lugar: alias dfh = 'df -h -x squashfs -x tmpfs'
Steve Valliere
1

Esta respuesta intenta abordar las siguientes preocupaciones de yves :

Preferiría no tener un alias para cada combinación de opciones (1)

y

aunque muestra el '/' en rojo (2)

y (3) agregue una información importante a la salida variable, que es dfla línea de encabezado que cambia de acuerdo con los indicadores suministrados.

(1) Necesitas function, porque por definición toma argumentos. Y, es muy simple de definir y usar como lo descubrirá a continuación.

(2) el rojo /es producido por grep --color, que es un alias común a grepsí mismo (puede verificarlo ejecutando alias).

código

function df1 
{ 
    df $* | sed -n '1p;/^\//p;'
}

Las nuevas líneas anteriores están destinadas a mejorar la legibilidad, puede reemplazarlas por espacio.

Copie y pegue este fragmento directamente en una sesión interactiva de bash o, mejor aún, añádalo a su ~/.bashrc.

Ejemplo de uso

$ df1 
Filesystem                        1K-blocks      Used Available Use% Mounted on
/dev/disk1                        487358464 316093104 171009360  65% /
/dev/disk2                           524032    302620    221412  58% /Volumes/Packer

$ df1 -hT
Filesystem                        Type   Size  Used Avail Use% Mounted on
/dev/disk1                        hfs    465G  302G  164G  65% /
/dev/disk2                        hfs    512M  296M  217M  58% /Volumes/Packer

$ df1 -hT .
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/disk1     hfs   465G  302G  164G  65% /

Que hace

La función df1llama dfcon cualquier argumento que le pase y canaliza ( |) la salida sed, que se invoca -npara suprimir la impresión automática del espacio del patrón. El resto expresa los "guiones" sed, dos en realidad:

  1. el script 1pimprime la primera línea, que en nuestro caso es dfel encabezado (yo uso lo mismo para la pstubería),
  2. el script /^\//pcoincide con cualquier línea que comience /y luego la imprime
  3. ; separa los 2 scripts sed
Ori Sapogalaxy
fuente
0

Yo uso alias df='df -hT -xtmpfs -xdevtmpfs'.

Casi apesta que tengas que usar un alias para hacer que GNU sea dfrealmente utilizable en Linux en estos días. Debería haber una opción para mostrar solo sistemas de archivos "reales" (lo que sea que eso signifique).

En realidad, df -hxtmpfselimina la mayor parte de la basura y se puede usar sin un alias. No es realmente peor que netstat -tulnpy tal ... * suspiro *

Nicolas Melay
fuente
0

Leyendo man mount

Listado de los montajes
El modo de listado se mantiene solo para compatibilidad con versiones anteriores. Para un uso de salida más robusto y personalizable findmnt(8), especialmente en sus scripts.

me mostró otra forma de obtener exactamente la salida deseada.

Creé una función lsmounts

lsmounts () {
  findmnt -D -t nosquashfs,notmpfs,nodevtmpfs
}

Explicación de los argumentos:

  • -D: proporcionar salida como la conocemos df
  • -t: seleccione los tipos de sistemas de archivos que desea ver. Prepending noexcluye los sistemas de archivos mencionados.

Entonces obtengo la salida deseada

SOURCE                       FSTYPE   SIZE   USED  AVAIL USE% TARGET
/dev/mapper/vgubuntu-lvroot  ext4    78,3G  42,5G  31,7G  54% /
/dev/mapper/vgubuntu-lvhome  ext4   284,5G 146,4G 124,5G  51% /home
...
Guntbert
fuente