Ich suche nach einem portablen Weg, um den übergeordneten Block-Gerätenamen (z. B. /dev/sda
) anhand des Partitions-Gerätenamens (z /dev/sda1
. B. ) zu erhalten. Ich weiß, dass ich das letzte Zeichen einfach fallen lassen könnte, aber das würde in einigen Fällen nicht funktionieren:
- MMC-Kartenleser haben normalerweise Namen wie
/dev/mmcblk0
, während ihre Partitionen Namen wie/dev/mmcblk0p1
(beachten Sie das Extrap
) haben. - Optional: Einige Blockgeräte haben überhaupt keine Partitionstabelle und sind als einzelne Partition formatiert. In diesem Fall sind Partitionsgerät und übergeordnetes Blockgerät identisch.
LVM-Volumina sind ein ganz anderer Fischkessel. Ich brauche sie momentan nicht zu unterstützen, aber wenn es ein wenig mehr Aufwand kostet, sie in Betracht zu ziehen, hätte ich nichts dagegen.
/dev/sda1
und /dev/mmcblk0p1
sind sowieso Linux-spezifisch. lsblk
ist allerdings relativ neu.
lsblk
Verwendet auch die Geräteknotennummern, um die richtige zu finden, anstatt nur den Namen zu verwenden. scheint die einfachste Lösung für Linux zu sein und util-linux wäre wahrscheinlich sowieso immer verfügbar.
lsblk -dpno pkname $devname
hat alle meine Tests bestanden! Vielleicht solltest du eine Antwort hinzufügen.
/dev/sd0c
in diesem Fall zurückkommt . Funktionieren die folgenden Antworten für Sie?
/dev/sd0a
aber es gibt kein/dev/sd0
Gerät (es gibt ein/dev/sd0c
...)