Estoy buscando una forma portátil de obtener el nombre del dispositivo de bloque primario (por ejemplo /dev/sda
) dado el nombre del dispositivo de partición (por ejemplo /dev/sda1
). Sé que podría dejar caer el último personaje, pero eso no funcionaría en algunos casos:
- Los lectores de tarjetas MMC suelen tener nombres similares
/dev/mmcblk0
, mientras que sus particiones tienen nombres similares/dev/mmcblk0p1
(observe el extrap
). - opcional: algunos dispositivos de bloque no tienen ninguna tabla de particiones y están formateados como una sola partición. En este caso, el dispositivo de partición y el dispositivo de bloque primario son iguales.
Los volúmenes LVM son una caldera de peces completamente diferente. No necesito apoyarlos en este momento, pero si tomarlos en cuenta requiere poco esfuerzo adicional, no me importaría.
/dev/sda1
y /dev/mmcblk0p1
son específicos de Linux de todos modos. lsblk
Sin embargo, es relativamente reciente.
lsblk
también usa los números de nodo del dispositivo para encontrar el correcto, en lugar de solo usar el nombre. Parece que la solución más simple para Linux y util-linux probablemente siempre estará disponible de todos modos.
lsblk -dpno pkname $devname
pasó todas mis pruebas! Quizás deberías agregar una respuesta.
/dev/sd0c
en ese caso. ¿Las respuestas a continuación funcionan para usted?
/dev/sd0a
pero no hay/dev/sd0
dispositivo (hay un/dev/sd0c
...)