上週我有一個腳本希望我的 USB 是 sdc,我正在使用這個命令
usb_path=`lsblk | grep sdc1 | awk '{print $7}'`
但後來我回來看到棒子是空的,因為棒子的名字是sdb。那麼這根棍子的名字取決於什麼呢?當它獲得 sdc 時,我沒有插入其他磁碟,現在它是 sdb,也沒有插入其他磁碟。所以我能看到的唯一區別是時間,但這似乎很愚蠢。哦,這是與上週相同的 U 盤。
答案1
/中的字母b
/是一個計數器。c
sdb
sdc
偵測到的第一個磁碟獲取sda
,第二個磁碟獲取sdb
,依此類推。
例如,如果您在插入 USB 隨身碟時連接暫時鬆動,則可能會跳過字母。首先,USB 棒獲得sdb
,然後連接中斷並重新建立,然後它獲得sdc
,因為sdb
尚未釋放。
由於您不能指望同一設備每次都獲得相同的名稱,因此 Ubuntu 有一個目錄,其中包含指向磁碟的符號鏈接,這些磁碟綁定到磁碟上檔案系統的 ID:
/dev/disk/by-uuid/
您連接的每個磁碟上的每個分割區都會在此目錄中取得一個條目,並且對於相同分割區,該條目始終保持不變。
如果您想要存取插入特定 USB 連接埠的 USB 記憶棒而不是透過 USB 記憶棒的標識,您可以使用 中的條目/dev/disk/by-path
。
lsblk
如果您想要有關特定設備的信息,則接受參數。因此,lsblk | grep …
您可以使用例如lsblk /dev/disk/by-id/1234-5678
或lsblk /dev/disk/by-path/pci-0000:00:2.0-usb-0:1:1.0-scsi-0:0:0:0