Se tudo que você deseja é um lsblk
que mostre suas partições primárias / lógicas, você poderá fazer isso com uma combinação de fdisk
e análise. fdisk -l
se executado como root listará todas as partições e marcará as estendidas com Ext'd
:
# fdisk -l | grep dev
Disk /dev/sda: 500.1 GB, 500107862016 bytes
/dev/sda1 63 80324 40131 de Dell Utility
/dev/sda2 * 81920 30801919 15360000 7 HPFS/NTFS/exFAT
/dev/sda3 30801920 194643539 81920810 7 HPFS/NTFS/exFAT
/dev/sda4 194643601 976773119 391064759+ f W95 Ext'd (LBA)
/dev/sda5 194643603 198836504 2096451 c W95 FAT32 (LBA)
/dev/sda6 342951936 960387071 308717568 83 Linux
/dev/sda7 198840320 342949887 72054784 83 Linux
/dev/sda8 960389120 976773119 8192000 82 Linux swap / Solaris
Você pode combinar isso com uma pequena análise para obter a saída desejada:
$ lsblk -a | perl -lpe 'BEGIN{open(A,"sudo fdisk -l |");
while(<A>){next unless /Ext/;
$k{$1}++ if /^.*?(...\d)\s/; }}
@a=split(/\s+/);
$a[0]=~s/\W+//;
s/$a[5]/Extended/ if defined($k{$a[0]});'
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 39.2M 0 part
├─sda2 8:2 0 14.7G 0 part
├─sda3 8:3 0 78.1G 0 part /winblows
├─sda4 8:4 0 1K 0 Extended
├─sda5 8:5 0 2G 0 part
├─sda6 8:6 0 294.4G 0 part /home
├─sda7 8:7 0 68.7G 0 part /
└─sda8 8:8 0 7.8G 0 part [SWAP]
Acho que é o melhor que você pode fazer, pois findmnt
não mostrará partições estendidas, pois elas nunca serão montadas. Caso contrário, você poderia analisá-lo da mesma maneira.