Angenommen, ich habe eine Festplatte unter /dev/DISK_NAME
. Ich bin neugierig, ob es einen Befehl gibt, um die n
-te Partition dieser Festplatte zu finden.
Es scheint, dass so etwas mit möglich sein sollte lsblk
. Das Beste, was mir einfällt, ist:
lsblk -nlpo NAME,TYPE /dev/DISK_NAME | awk '/part$/ {print $1}' | grep "[^0-9]n$"
Dabei n
stellt das im letzten grep die betreffende Partitionsnummer dar.
Der obige Befehl funktioniert für die Arch-Linux-Maschine, auf der ich gerade bin, wobei DISK_NAME=sda
die Ausgabe lsblk -nlpo NAME,TYPE
lautet
/dev/sda disk
/dev/sda1 part
/dev/sda2 part
/dev/sda3 part
/dev/sda5 part
Mein Befehl funktioniert auch auf meiner Arch-Linux-Maschine, wo DISK_NAME=nvme0n1
und die Ausgabe lsblk -nlpo NAME,TYPE
ist
/dev/nvme0n1 disk
/dev/nvme0n1p1 part
/dev/nvme0n1p2 part
Das fühlt sich allerdings ziemlich wie ein Hack an und ich bin nicht sicher, ob es auf einer beliebigen Festplatte funktionieren würde.
Gibt es bessere Möglichkeiten, dies zu tun?
Antwort1
Es gibt überhaupt keine Garantie dafür sda1
– ich habe eine SSD mit nur sda4 und sda5. Wäre also die erste Partition die mit dem niedrigsten Start-LBA?
Oder vielleicht der erste Eintrag in der Partitionstabelle? parted -l
Laut
...
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
Welches ist die erste Partition - ist es2(welches den niedrigsten LBA hat) oder ist es1(das die niedrigste Partitionsnummer hat).
Wenn Sie den alten fdisk -l
Befehl bevorzugen, wird hiermit die Partitionstabelle für Sie sortiert [so dass die Partitionen mit der niedrigsten Nummer zuerst kommen].
Antwort2
Sie können zu diesem Zweck lsblk
JSON-Ausgabe und -Tool verwenden , das sieht meiner Meinung nach weniger hackig aus:jq
lsblk -J ${disk} | jq ".blockdevices[0].children[${partiton_number}].name"