
에 디스크가 있다고 가정합니다 /dev/DISK_NAME
. n
이 디스크의 6번째 파티션을 찾는 명령어가 있는지 궁금합니다 .
로 이런 일이 가능할 것 같습니다 lsblk
. 내가 생각해 낼 수 있는 최선의 방법은 다음과 같습니다.
lsblk -nlpo NAME,TYPE /dev/DISK_NAME | awk '/part$/ {print $1}' | grep "[^0-9]n$"
여기서 n
마지막 grep의 는 문제의 파티션 번호를 나타냅니다.
위의 명령은 현재 사용 중인 아치 Linux 시스템에서 작동하며, DISK_NAME=sda
그 출력은 다음과 lsblk -nlpo NAME,TYPE
같습니다.
/dev/sda disk
/dev/sda1 part
/dev/sda2 part
/dev/sda3 part
/dev/sda5 part
내 명령은 내 아치 Linux 시스템에서도 작동하며 DISK_NAME=nvme0n1
출력은 다음과 lsblk -nlpo NAME,TYPE
같습니다.
/dev/nvme0n1 disk
/dev/nvme0n1p1 part
/dev/nvme0n1p2 part
그래도 이것은 다소 해킹된 느낌이 들며 임의의 디스크에서 작동할지 확실하지 않습니다.
이를 수행하는 더 좋은 방법이 있습니까?
답변1
존재한다는 보장은 전혀 없습니다 sda1
. sda4와 sda5만 있는 SSD가 있습니다. 그렇다면 첫 번째 파티션은 시작 LBA가 가장 낮은 파티션이 될까요?
아니면 파티션 테이블의 첫 번째 항목일까요? 에 따르면 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
첫 번째 파티션은 무엇입니까?2(LBA가 가장 낮음) 아니면1(파티션 번호가 가장 낮습니다).
고대 fdisk -l
명령을 선호하는 경우 [가장 낮은 번호의 파티션이 먼저 오도록] 파티션 테이블을 정렬합니다.
답변2
목적에 맞게 lsblk
JSON 출력 및 도구를 사용할 수 있습니다 . IMHO는 덜 해킹적으로 보입니다.jq
lsblk -J ${disk} | jq ".blockdevices[0].children[${partiton_number}].name"