Código da shell para verificar se um dispositivo ou arquivo com espaços no caminho está montado

3

Os resultados de pesquisa que descobri foram sobre determinar se um sistema de arquivos está montado em um determinado caminho ou se um determinado caminho está sendo usado como um ponto de montagem. Eu estou procurando uma maneira de determinar se um determinado dispositivo ou arquivo (ou seja, uma imagem do sistema de arquivos) é montado em todos os . Esta solução deve ser capaz de manipular espaços no caminho para o dispositivo / arquivo.

Estes, que eu vi nos meus resultados de pesquisa, NÃO são soluções:

  • mountpoint -q "${PATH}" apenas testa se ${PATH} é um ponto de montagem.
  • A aplicação de grep -q "${PATH}" a alguma saída pode não funcionar porque ${PATH} pode ter espaços e a saída de comandos como mount possui espaços.

Além disso, deve retornar ONDE um arquivo / dispositivo é montado.

    
por Melab 19.10.2016 / 16:54

2 respostas

2

Você pode consultar o arquivo /proc/self/mounts (ou /proc/mounts ), neste espaço no arquivo estão codificados usando \ 040 (valor octal):

Exemplo, /dev/sda1 é montado em /mnt/mount sda1

grep '/dev/sda1' /proc/mounts | cut -d ' ' -f 2

Retornar: /mnt/mount0sda1

grep "$(echo '/mnt/mount sda1' | sed 's/ /\\040/g')" /proc/mounts | cut -d ' ' -f 1

Retornar: /dev/sda1

    
por 19.10.2016 / 17:26
0

/ etc / mtab, / proc / mounts e assim por diante não exibem o caminho do arquivo de origem.

O comando

mount faz e formata sua saída.

Você pode tentar:

mount | egrep "${file_path=} on /"

export file_path="/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso"

mount | egrep "${file_path=} on /"
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso on /mnt/pc75 type iso9660 (ro,relatime)

Ao contrário de

mount | grep debian               
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso on /mnt/pc75 type iso9660 (ro,relatime)
/home/kalavan/Downloads/debian 6.0.10-amd64-netinst.iso_somethingelse on /mnt/projekte type iso9660 (ro,relatime)

O risco de erro é muito menor então. Pode-se também tentar combinar o padrão do resto da linha com um regexp.

    
por 19.10.2016 / 17:36

Tags