Получить сменный путь диска по метке в сценарии bash

Я написал следующий пакетный скрипт Windows, который копирует данный файл на виртуальный диск 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. ) 

Привод Nucleo – это виртуальный файловый накопитель. Когда вы копируете на него совместимый двоичный файл, он мигает двоичным кодом на текущем процессоре Nucleo и перезапускает его. Я хотел бы сделать то же самое для Linux, используя скрипт bash, особенно Ubuntu, но чем более совместимым, тем лучше.

Я вижу, что Nucleo появился на пути /media/MY_USERNAME/NODE_F446RE . Но у меня мало опыта работы с Linux, это стандартный путь? Могу ли я полагаться на копирование файла на /media/%username%/NODE_F446RE ?

Или есть лучший способ получить путь к съемному устройству (скажем, первый том, если он имеет больше томов, а нуклео не будет)?

Вы можете полагаться на это конкретное съемное устройство, которое отображается как /media/$username/NODE_F446RE на вашем компьютере. Это не универсально в мире Linux, но так оно и есть (достаточно недавно) Ubuntu и большинство других дистрибутивов в наши дни: /media , имя пользователя, метка файловой системы.

Существуют и другие способы обеспечения фиксированного пути, но вы должны только воссоздать те же механизмы, что и установка по умолчанию, уже используемая ( udisks2 ). И есть способы найти, где монтируется конкретное устройство (ищите устройство под /dev/disks с использованием известных характеристик, затем используйте /proc/mounts findmnt или df или findmnt чтобы найти, где это устройство смонтировано), но вы не нужны они на вашей машине. Поэтому нет смысла изучать другие подходы, если вам не нужно делать что-то, что работает для среды других людей.