파티션이 암호화되면 lsblk 또는 유사한 명령을 사용하여 루트 파티션 이름을 반환합니다.

파티션이 암호화되면 lsblk 또는 유사한 명령을 사용하여 루트 파티션 이름을 반환합니다.

이것은 내 lsblk결과입니다.

NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1       259:0    0 465.8G  0 disk  
├─nvme0n1p1   259:1    0   512M  0 part  /efi
├─nvme0n1p2   259:2    0   420G  0 part  
│ └─cryptroot 254:0    0   420G  0 crypt /
└─nvme0n1p3   259:3    0  45.3G  0 part

"crypt" 또는 "part"를 미리 알지 못한 채 "crypt"가 마운트 지점 "/"와 연결된 "part"를 검색해야 합니다.

nvme0n1p2 /

단일 명령으로 이를 달성할 수 있습니까?

답변1

lsblk파이프할 수 있는 JSON을 출력할 수 있습니다.jq. jq다양한 복잡한 쿼리를 수행하는 데 사용할 수 있는 JSON 프로세서입니다. 따라서 다음과 같이 작동해야 합니다.

lsblk --json | \
  jq -r '.blockdevices[] | .children[] | select( .. | objects | .mountpoints[]? == "/" ) | .name'

예를 들어:

$ lsblk
NAME                MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1             259:0    0 953.9G  0 disk  
├─nvme0n1p1         259:1    0   512M  0 part  /boot/efi
├─nvme0n1p2         259:2    0   3.9G  0 part  /boot
└─nvme0n1p3         259:3    0 949.5G  0 part  
  └─nvme0n1p3_crypt 253:0    0 949.5G  0 crypt /

$ lsblk --json | \
  jq -r '.blockdevices[] | .children[] | select( .. | objects | .mountpoints[]? == "/" ) | .name'
nvme0n1p3

관련 정보