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/sda1und /dev/mmcblk0p1sind sowieso Linux-spezifisch. lsblkist allerdings relativ neu.
lsblkVerwendet 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 $devnamehat alle meine Tests bestanden! Vielleicht solltest du eine Antwort hinzufügen.
/dev/sd0cin diesem Fall zurückkommt . Funktionieren die folgenden Antworten für Sie?
/dev/sd0aaber es gibt kein/dev/sd0Gerät (es gibt ein/dev/sd0c...)