在bash脚本中通过标签获取可移动驱动器路径

在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 处理器上刷新该二进制文件并重新启动它。我想使用 bash 脚本对 Linux 做同样的事情 - 特别是 Ubuntu,但兼容性越好。

我可以看到 Nucleo 出现在路径上/media/MY_USERNAME/NODE_F446RE。但我对linux的经验很少,那是标准的路径吗?我可以依赖将文件复制到吗/media/%username%/NODE_F446RE

或者是否有更好的方法来获取可移动设备路径(例如,如果有更多卷,则为第一个卷,而 nucleo 不会)?

答案1

您可以信赖/media/$username/NODE_F446RE您计算机上显示的这个特定的可移动设备。这在 Linux 世界中并不通用,但在(最近的)Ubuntu 和当今大多数其他发行版中都是这样的:/media、用户名、文件系统标签。

还有其他方法可以确保固定路径,但您只需重新创建默认设置已使用的相同机制(优盘2)。有多种方法可以查找特定设备的安装位置(/dev/disks使用已知特征查找设备,然后使用/proc/mountsdffindmnt查找该设备的安装位置),但您的计算机上不需要它们。因此,除非您需要制作适合其他人环境的东西,否则研究其他方法是没有意义的。

相关内容