Bashスクリプトからタグにリムーバブルドライブパスを取得する

Bashスクリプトからタグにリムーバブルドライブパスを取得する

指定されたファイルをNucleo STM32仮想ドライブにコピーするために、次のWindowsバッチスクリプトを作成しました。

@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ユーザー名、ファイルシステムラベルがあります。

固定パスを保証する他の方法がありますが、デフォルト設定ですでに使用しているのと同じメカニズムを再生成するだけです(USB 2)。特定のデバイスが取り付けられている場所を見つけるにはいくつかの方法があります(既知の/dev/disks特性を使用してデバイスを見つけ、または/proc/mountsまたはdfを使用してfindmntデバイスがインストールされている場所を見つけます)。ただし、コンピュータではそのデバイスは必要ありません。したがって、他の人の環境で動作するものを作成する必要がない限り、他の方法を見る必要はありません。

おすすめ記事