mostrar apenas discos físicos ao usar df e mount

9

Quando uso dfou mount, estou acima de tudo interessado em partições físicas de disco. Atualmente, a saída desses comandos é sobrecarregada por sistemas de arquivos temporários e virtuais, cgroups e outras coisas nas quais eu não estou interessado regularmente.

Minhas partições físicas na saída sempre começam com ' /', então tentei criar aliases para dfe mount:

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

Isso funciona bem para mount1(embora mostre o ' /' em vermelho), mas df1às vezes eu gostaria de adicionar a -hopção dfe não posso fazer isso df1 -h. Eu preferiria não ter um alias para cada combinação de opções que eu queira usar. Eu realmente tenho que olhar para definir funções no bash (eu preferiria não)? Existe uma solução melhor para df1?

yves
fonte

Respostas:

6

Você pode resolver o problema do df1argumento usando o seguinte alias:

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

certifique-se de adicionar qualquer outro tipo ( xfs, fuseblk(para suporte moderno ao NTFS, como @Pandya apontou), etc) de seu interesse. Com isso, você pode fazer df1 -he obter o resultado esperado.

mounttem uma -topção, mas você não pode especificá-la várias vezes (apenas a última é usada), lá eu usaria:

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

Estou usando grep -Ecomo egrepestá obsoleto e o uso /bin/grepgarante que você não esteja usando --colour=autoum alias para grep/egrep

Anthon
fonte
df --type ntfsnão está mostrando 5 partição NTFS e, portanto, ignorá-los no resultado para mim
Pandya
Eu tenho que usar --type fuseblkpara isso
Pandya
@ Pandand, foi o que eu indiquei, você precisa adicionar outros tipos nos quais se interessa. Eu não tenho partições NTFS no meu sistema há vários anos, então não tenho certeza de onde isso veio no alias que eu uso. .
Anthon
1
O @Pandya parece que --type ntfsestava no meu pseudônimo desde o momento em que havia suporte mínimo ao NTFS (o momento em que você teve que fazer uma verificação do sistema de arquivos na partição NTFS após a reinicialização no Windows% -). Atualizei minha resposta, obrigado.
Anthon
3

Você pode definir a função da seguinte maneira:

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

Exemplo de saída:

$ 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

Aqui $@permite que você insira seus argumentos! [Observe que $@sempre deve ser escrito entre aspas duplas, a menos que você tenha um motivo concreto para não fazê-lo. -ed]

Pandya
fonte
3

Se mudar para um diferente dffor uma opção, use-o pydf, pois não mostra sistemas de arquivos com 0 blocos por padrão e possui um medidor, cores e algumas outras propriedades ativadas por padrão. Funciona bastante bem como um alias df, e o original está sempre disponível de \dfqualquer maneira.

Josip Rodin
fonte
Para mim, a resposta mais útil aqui. Infelizmente, isso não existe para mount.
emk2203
Um pouco tarde, mas para mim o pydf mostrou minha única unidade física e 33 / dev / loop ## quando tudo que eu quero é a unidade física. A resposta df aceitos trabalhos, mas eu prefiro este formulário em vez disso: apelido dfh = 'df -h -x squashfs -x tmpfs'
Steve Valliere
1

Esta resposta tenta abordar as seguintes preocupações de yves :

Eu preferiria não ter um alias para cada combinação de opções (1)

e

embora mostre o '/' em vermelho (2)

e (3) adicionar uma informação importante à saída variável, que é dfa linha do cabeçalho que muda de acordo com os sinalizadores fornecidos.

(1) Você precisa function, porque, por definição, recebe argumentos. E, é muito simples definir e usar, como você descobrirá abaixo.

(2) o vermelho /é produzido por grep --color, que é um alias comum a grepsi mesmo (você pode verificar isso executando alias).

código

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

As novas linhas acima são destinadas a melhorar a legibilidade, você pode substituí-las por espaço.

Copie e cole esse snippet diretamente em uma sessão interativa do bash ou, melhor ainda, anexe-o ao seu ~/.bashrc.

Exemplo 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% /

O que faz

A função df1chama dfcom quaisquer argumentos que você passar e canaliza |a saída ( ) sed, a qual é chamada -npara suprimir a impressão automática do espaço do padrão. O resto expressa os "scripts" sed, dois na verdade:

  1. o script 1pimprime a primeira linha, que no nosso caso é dfo cabeçalho (eu uso o mesmo para a pstubulação),
  2. o script /^\//pcorresponde a qualquer linha que comece com /e depois imprime
  3. ; separa os 2 scripts sed
Ori Sapogalaxy
fonte
0

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

É péssimo que você precise usar um alias para tornar o GNU dfrealmente utilizável no Linux atualmente. Deve haver uma opção para mostrar apenas sistemas de arquivos "reais" (o que isso significa).

Na verdade, df -hxtmpfsretira a maior parte do lixo e permanece utilizável sem um pseudônimo. Não é realmente pior do que netstat -tulnpisso ... * suspiro *

Nicolas Melay
fonte
0

Lendo man mount

Listando as montagens
O modo de listagem é mantido apenas para compatibilidade com versões anteriores. Para uso de saída mais robusto e personalizável findmnt(8), especialmente em seus scripts.

me mostrou outra maneira de obter exatamente a saída desejada.

Eu criei uma função lsmounts

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

Explicação para os argumentos:

  • -D: fornecer saída como a conhecemos df
  • -t: selecione os tipos de sistemas de arquivos que deseja ver. A inclusão antecipada noexclui os sistemas de arquivos mencionados.

Então eu recebo a saída desejada

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
fonte