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/sda1y /dev/mmcblk0p1son específicos de Linux de todos modos. lsblkSin embargo, es relativamente reciente.
lsblktambié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 $devnamepasó todas mis pruebas! Quizás deberías agregar una respuesta.
/dev/sd0cen ese caso. ¿Las respuestas a continuación funcionan para usted?
/dev/sd0apero no hay/dev/sd0dispositivo (hay un/dev/sd0c...)