Supongamos que tengo un disco ubicado en /dev/DISK_NAME
. Tengo curiosidad por saber si existe un comando para encontrar la n
enésima partición de este disco.
Parece que este tipo de cosas debería ser posible con lsblk
. Lo mejor que se me ocurre es:
lsblk -nlpo NAME,TYPE /dev/DISK_NAME | awk '/part$/ {print $1}' | grep "[^0-9]n$"
Aquí, n
el último grep representa el número de partición en cuestión.
El comando anterior funciona para la máquina Arch Linux en la que estoy actualmente, donde DISK_NAME=sda
y la salida lsblk -nlpo NAME,TYPE
es
/dev/sda disk
/dev/sda1 part
/dev/sda2 part
/dev/sda3 part
/dev/sda5 part
Mi comando también funciona en mi máquina Arch Linux donde DISK_NAME=nvme0n1
y la salida lsblk -nlpo NAME,TYPE
es
/dev/nvme0n1 disk
/dev/nvme0n1p1 part
/dev/nvme0n1p2 part
Aún así, esto parece bastante complicado y no estoy seguro de si funcionaría en un disco arbitrario.
¿Hay mejores maneras de hacer esto?
Respuesta1
No existe sda1
ninguna garantía: tengo un SSD solo con sda4 y sda5. Entonces, ¿la primera partición sería la que tuviera el LBA inicial más bajo?
¿O quizás la primera entrada en la tabla de particiones? De acuerdo a parted -l
,
...
Number Start End Size File system Name Flags
2 316MB 333GB 333GB ext4 /mnt/backup
3 333GB 791GB 457GB ext4 /mnt/filestore
4 791GB 832GB 41.9GB ext4 /run/timeshift/backup
1 832GB 841GB 8590MB ext4 /mnt/music
¿Cuál es la primera partición?2(que tiene el LBA más bajo) o es1(que tiene el número de partición más bajo).
Si prefiere el fdisk -l
comando antiguo, esto ordenará la tabla de particiones [para que las particiones con el número más bajo aparezcan primero].
Respuesta2
Puede usar lsblk
la salida JSON y jq
la herramienta para este propósito, en mi humilde opinión parece menos complicado:
lsblk -J ${disk} | jq ".blockdevices[0].children[${partiton_number}].name"