Dapatkan jalur drive yang dapat dilepas dengan label dalam skrip bash

1

Saya menulis skrip batch Windows yang menyalin file yang diberikan ke 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.
)

Drive Nucleo adalah drive file virtual. Ketika Anda menyalin biner yang kompatibel di dalamnya, itu akan berkedip biner pada prosesor Nucleo yang sebenarnya dan me-restart itu. Saya ingin melakukan hal yang sama untuk Linux menggunakan skrip bash - khususnya Ubuntu, tetapi semakin kompatibel semakin baik.

Saya dapat melihat bahwa Nucleo muncul di jalan /media/MY_USERNAME/NODE_F446RE. Tapi saya punya sedikit pengalaman dengan linux, apakah itu standar path? Bisakah saya mengandalkan menyalin file /media/%username%/NODE_F446RE?

Atau apakah ada cara yang lebih baik untuk mendapatkan jalur perangkat yang dapat dilepas (katakan, volume pertama jika memiliki lebih banyak volume, yang mana nukleo tidak mau)?

Tomáš Zato
sumber
cobalsblk -rno label,mountpoint | awk '$1=="NODE_F446RE"{print $2}'
don_crissti
Apakah ini di subsistem linux untuk lingkungan Windows?
Jeff Schaller

Jawaban:

0

Anda dapat mengandalkan perangkat yang dapat dilepas ini dan muncul /media/$username/NODE_F446REpada perangkat Anda. Ini tidak universal di dunia Linux, tetapi seperti itulah caranya (cukup baru) Ubuntu dan sebagian besar distribusi lainnya hari ini:, /medianama pengguna, label sistem file.

Ada beberapa cara lain untuk memastikan jalur tetap, tetapi Anda hanya akan menciptakan kembali mekanisme yang sama dengan yang digunakan pengaturan default ( udisks2 ). Dan ada cara untuk menemukan di mana perangkat tertentu dipasang (cari perangkat di bawah /dev/disksmenggunakan karakteristik yang diketahui, kemudian gunakan /proc/mountsatau dfatau findmntuntuk menemukan di mana perangkat itu dipasang), tetapi Anda tidak memerlukannya di mesin Anda. Jadi tidak ada gunanya menyelidiki pendekatan lain kecuali Anda perlu membuat sesuatu yang bekerja untuk lingkungan orang lain.

Gilles
sumber
label dan / atau UUID. Mungkin juga tergantung jika lingkungan desktop sedang berjalan, dll.
ivanivan