Eu posso fazer df .
para obter algumas informações sobre a montagem em que o diretório atual está, e posso obter todas as informações que desejo mount
, mas obter muitas informações (informações sobre outras montagens). Posso cumpri-lo, mas estou me perguntando se existe uma maneira melhor.
Existe algum comando mountinfo
que mountinfo .
dê as informações que eu quero (como df .
, mas com as informações que mount
dá).
Estou usando o Debian Gnu + Linux.
filesystems
mount
disk-usage
ctrl-alt-delor
fonte
fonte
stat
comando pode ser usado também. No entanto, não tenho certeza se a%m
opção que fornece o ponto de montagem é suportada na sua versão do sistema. Fiz o check-in no meu sistema e parecia não retornar o ponto de montagem.stat "--printf=%m\n" .
obtém o ponto de montagem do sistema de arquivos em que o diretório atual se encontra. Assim, simplificamos algumas das respostas. Obrigado.Respostas:
Eu acho que você quer algo assim:
Ao usar a opção
se o caminho não for um arquivo ou diretório de ponto de montagem,findmnt
verifica os elementos do caminho na ordem inversa para obter o ponto de montagem. Você pode imprimir apenas determinados campos via-o, --output [list]
.Veja
findmnt --help
a lista de campos disponíveis.Como alternativa, você pode executar:
O problema que você está enfrentando é que todos os caminhos são relativos a uma coisa ou outra, então você só precisa andar na árvore. Toda vez.
findmnt
é um membro do pacote util-linux e já existe há alguns anos. Até agora, independentemente da sua distribuição, ela já deve estar instalada na sua máquina Linux se você também tiver amount
ferramenta.findmnt
imprimirá as informações de todas as montagens sem um argumento de ponto de montagem, e somente isso para seu argumento com um. A-D
é a opção emulardf
. Sem-D
sua saída, é semelhante aomount
's - mas muito mais configurável. Tentefindmnt --help
e veja por si mesmo.Coloco em um subshell para que o diretório atual do shell atual não seja alterado.
Então:
RESULTADO
Se você não tem a
-D
opção disponível (não nas versões mais antigas do util-linux), então não precisa ter medo - é pouco mais do que uma opção de conveniência em qualquer caso. Observe os títulos das colunas que produz para cada chamada - você pode incluir ou excluir os títulos de cada chamada com a-o
opção utput. Posso obter a mesma saída que-D
pode fornecer como:RESULTADO
fonte
-D
, eu não tenho essa opção. (Estou no Debian7, util-linux 2.20.1-5.3)df
- estou disposto a apostar que ele faz loop, você não precisa dizer para fazê-lo.findmnt $(stat "--printf=%m\n" .)
findmnt
possui uma-T
opção que pode ignorar ocd ..
loop. Pode ser útil para outra pessoa.A maneira Linux / Unix é ter uma caixa de ferramentas de pequenos utilitários que, quando combinados, fornecem os resultados que você procura.
Eles tendem a não ter utilidade para todas as ocasiões. Em vez disso, você tem muitos pequenos utilitários úteis que são combinados com pipes etc. A vantagem disso é que você pode escrever seu próprio utilitário com bastante facilidade se não houver nenhum disponível.
Por exemplo, para obter as informações que você procura, você pode usar:
Se você deseja reutilizar o acima com diretórios diferentes, crie um script:
Salve-o como
mountinfo
e torne-o executável (chmod +x mountinfo
). Você pode usá-lo como:Se você deseja um sistema que tenha utilidade para tudo que não interaja, um certo Sr. Gates poderá ajudá-lo ;-)
fonte
--output
só existe em versões muito recentes do GNU coreutils (≥8.22).mount
sem opções, parece um pouco tardio: com as opções, você cria pontos de montagem, sem que eles os listem, eu esperava uma ferramenta de lista melhor. Como vemos, o @mikeserv nos mostroufindmnt
.Pode ser um pouco confuso se os pontos de montagem contiverem espaços em branco, mas isso deve funcionar, exceto nos casos em que os pontos de montagem contenham novas linhas:
df -P
gera uma linha para o sistema de arquivos; sem essa opção,df
pode gerar duas linhas se o ponto de montagem for longo. O nome do ponto de montagem começa na mesma coluna que o rótulo "Montado em" na linha do cabeçalho.Depois de obtermos o ponto de montagem, nós o saudamos na saída de
mount
.fonte
Não conheço um comando, mas você pode criar uma função. Você pode adicionar o seguinte ao seu
.bashrc
:Isso executa o
mount
comando e passa a saída paragrep
.grep
irá procurar a saída dedf -P "$1" | tail -n 1 | awk '{print $1}'
, e decompô-la:df -P "$1"
será executadodf
no argumento passado para a função,tail -n 1
apenas produzirá a segunda linha, a que contém aspartition
informações.awk '{print $1}'
imprimirá a primeira parte dessa linha, que é o número do disco / partição, por exemplo/dev/sda5
. É o quegrep
procurará no comando mount e o produzirá.Crie seu
.bashrc
arquivo para aplicar as alterações ou efetue logout e logon novamente.Agora, se você executar
mountinfo .
, obterá a saída desejada.fonte
mount
sem opções, parece um pouco uma reflexão tardia: com as opções de criação de pontos de montagem, sem que sejam listados, eu esperava uma ferramenta de lista melhor. Como vemos, o @mikeserv nos mostroufindmnt
.Se você estiver usando uma versão não completamente antiga do GNU coreutils df, então
echo $(df . --output=target | tail -n 1)
funcionará. Da mesma formastat -c '%m' .
, embora observe que https://linux.die.net/man/1/stat não possui documentação da%m
opção de formato.Fazer isso de maneira portável é cansativo: nenhuma das opções acima funcionará com as versões BSD ou Cygwin do stat ou df. Se não fosse a possibilidade de espaços nos caminhos dos pontos de montagem,
df -P . | tail -1 | awk '{ print $NF}'
seria bom, mas geralmente as unidades flash USB possuem espaços no nome do volume, o que provavelmente aparecerá no caminho da montagem e interromperá isso. Para portabilidade, o Perl é instalável praticamente em qualquer lugar e o CPAN possui o módulo Sys :: Filesystem :: MountPoint, que fornece a funcionalidade desejada.fonte
echo $()
adiciona ao comando?