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/sda1i /dev/mmcblk0p1są specyficzne dla Linuksa. lsblkjest stosunkowo nowy.
lsblkuż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 $devnameprzeszedł wszystkie moje testy! Być może powinieneś dodać odpowiedź.
/dev/sd0cw takim przypadku. Czy poniższe odpowiedzi działają dla Ciebie?
/dev/sd0aale nie ma/dev/sd0urządzenia (jest/dev/sd0c...)