Supposons que j'ai un disque situé à /dev/DISK_NAME
. Je suis curieux de savoir s'il existe une commande pour trouver le n
ème partition de ce disque.
Il semble que ce genre de chose devrait être possible avec lsblk
. Le mieux que je puisse trouver est :
lsblk -nlpo NAME,TYPE /dev/DISK_NAME | awk '/part$/ {print $1}' | grep "[^0-9]n$"
Ici, le n
dans le dernier grep représente le numéro de partition en question.
La commande ci-dessus fonctionne pour la machine arch Linux sur laquelle je suis actuellement, où DISK_NAME=sda
et la sortie de lsblk -nlpo NAME,TYPE
est
/dev/sda disk
/dev/sda1 part
/dev/sda2 part
/dev/sda3 part
/dev/sda5 part
Ma commande fonctionne également sur ma machine arch Linux où DISK_NAME=nvme0n1
et la sortie de lsblk -nlpo NAME,TYPE
est
/dev/nvme0n1 disk
/dev/nvme0n1p1 part
/dev/nvme0n1p2 part
Pourtant, cela semble plutôt piraté, et je ne suis pas sûr que cela fonctionnerait sur un disque arbitraire.
Existe-t-il de meilleures façons de procéder ?
Réponse acceptée :
Il n'y a aucune garantie que sda1
existe du tout - j'ai un SSD avec seulement sda4 et sda5. Alors, la première partition serait-elle celle avec le LBA de démarrage le plus bas ?
Ou peut-être la première entrée de la table de partition ? Selon 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
Quelle est la première partition - est-ce 2 (qui a le LBA le plus bas) ou est-ce 1 (qui a le plus petit numéro de partition).
Si vous préférez l'ancien fdisk -l
, cela triera la table des partitions pour vous [afin que les partitions les plus petites viennent en premier].