Obtenha o caminho da unidade removível pelo rótulo no script bash

1

Eu escrevi o seguinte script de lote do Windows que copia o arquivo fornecido para o drive virtual Nucleo STM32:

@echo off
for /f %%D in ('%SystemRoot%\System32\wbem\WMIC.exe volume get DriveLetter^, Label ^| find "NODE_F446RE"') do set nucleo_drive=%%D
rem echo Nucleo drive: %nucleo_drive%

IF EXIST %nucleo_drive%\DETAILS.TXT (
  IF EXIST %1 (
    @echo on
    xcopy %1 %nucleo_drive%
    @echo off
    echo Copied %1 on nucleo
  ) ELSE (
    echo Binary %1 not found. Run 'mingw32-make' in this directory to compile the project.
  )
) ELSE (
  echo Nucleo drive not found. If needed, edit the 'find "NODE_F446RE"' part of this script to refference your nucleo volume name.
)

O drive do Nucleo é um drive de arquivo virtual. Quando você copia um binário compatível, ele pisca o binário no processador Nucleo real e o reinicia. Eu gostaria de fazer o mesmo para o Linux usando um script básico - particularmente o Ubuntu, mas quanto mais compatível, melhor.

Eu posso ver que o Nucleo apareceu no caminho /media/MY_USERNAME/NODE_F446RE . Mas tenho pouca experiência com linux, esse caminho é padrão? Posso confiar em copiar o arquivo para /media/%username%/NODE_F446RE ?

Ou existe uma maneira melhor de obter o caminho do dispositivo removível (digamos, o primeiro volume se ele tiver mais volumes, e o nucleo não)?

    
por Tomáš Zato 14.02.2017 / 15:40

1 resposta

0

Você pode confiar nesse dispositivo removível específico que aparece como /media/$username/NODE_F446RE em sua máquina. Isso não é universal no mundo Linux, mas é assim que é no Ubuntu e na maioria das outras distribuições atualmente: /media , nome de usuário, rótulo do sistema de arquivos.

Existem outras maneiras de garantir um caminho fixo, mas você só estará recriando os mesmos mecanismos que a configuração padrão já usa ( udisks2 ). E há maneiras de descobrir onde um determinado dispositivo está montado (procure o dispositivo em /dev/disks usando características conhecidas e, em seguida, use /proc/mounts ou df ou findmnt para descobrir onde esse dispositivo está montado), mas você não você precisa deles em sua máquina. Portanto, não adianta investigar outras abordagens, a menos que você precise criar algo que funcione para o ambiente de outras pessoas.

    
por 15.02.2017 / 01:13