Szukam przenośnego sposobu na uzyskanie nazwy nadrzędnego urządzenia blokowego (np. /dev/sda
) Biorąc pod uwagę nazwę urządzenia partycji (np /dev/sda1
.). Wiem, że mogłem po prostu upuścić ostatnią postać, ale w niektórych przypadkach to nie zadziała:
- Czytniki kart MMC zwykle mają nazwy takie jak
/dev/mmcblk0
, podczas gdy ich partycje mają nazwy takie jak/dev/mmcblk0p1
(zauważ dodatkowep
). - opcjonalnie: niektóre urządzenia blokowe nie mają żadnej tabeli partycji i są sformatowane jako pojedyncza partycja. W takim przypadku urządzenie partycji i urządzenie nadrzędnego bloku są takie same.
Objętości LVM to zupełnie inny czajnik ryb. Nie muszę ich teraz wspierać, ale jeśli uwzględnienie ich wymaga niewielkiego dodatkowego wysiłku, nie miałbym nic przeciwko.
/dev/sda1
i /dev/mmcblk0p1
są specyficzne dla Linuksa. lsblk
jest stosunkowo nowy.
lsblk
używa również numerów węzłów urządzenia, aby znaleźć właściwy, zamiast po prostu używać nazwy. Wydaje się, że najprostsze rozwiązanie dla Linuksa i util-linux prawdopodobnie i tak będzie zawsze dostępne.
lsblk -dpno pkname $devname
przeszedł wszystkie moje testy! Być może powinieneś dodać odpowiedź.
/dev/sd0c
w takim przypadku. Czy poniższe odpowiedzi działają dla Ciebie?
/dev/sd0a
ale nie ma/dev/sd0
urządzenia (jest/dev/sd0c
...)