これは私の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