이것은 내 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