Bra*_*iam 14 command-line filesystems
我正在尝试找到类似于输出findmnt
但使用卷而不是安装点的内容(示例):
TARGET TYPE FSTYPE
sda
??sda1 Primary ext4
? ??/
??sda2 Primary NTFS
??sda3 Primary ext4
? ??/boot
??sda4 Extended
??sda5 Logical ext4
? ??/home
??sda6 Logical ext4
??/var
Run Code Online (Sandbox Code Playgroud)
TYPE 和 FSTYPE 的显示是可选的,我更感兴趣的是树状布局。
的输出lsblk
有些不完整,因为它没有显示主分区、扩展分区和逻辑分区之间的差异。(我知道我在这里很挑剔):
lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 186.3G 0 disk
??sda1 8:1 0 106.6G 0 part
??sda2 8:2 0 52.8G 0 part /media/F66E431C6E42D551
??sda3 8:3 0 1023M 0 part [SWAP]
??sda4 8:4 0 1K 0 part
??sda5 8:5 0 953M 0 part /boot
??sda6 8:6 0 487M 0 part [SWAP]
??sda7 8:7 0 14G 0 part /
??sda8 8:8 0 10.5G 0 part /home
Run Code Online (Sandbox Code Playgroud)
我知道sda4
扩展分区包括sda5
, sda6
, sda7
,sda8
逻辑分区;但如果我看到其他人的输出,我就不会知道了。如果不是part
和disk
它说pri
log
和ext
将是一个很好的选择,至少我知道这种关系。但既然都是part
……不好。
sudo fdisk -l
输出:
Disk /dev/sda: 200.0 GB, 200049647616 bytes
255 heads, 63 sectors/track, 24321 cylinders, total 390721968 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1549f232
Device Boot Start End Blocks Id System
/dev/sda1 * 63 223629311 111814624+ 7 HPFS/NTFS/exFAT
/dev/sda2 225724416 336437306 55356445+ 7 HPFS/NTFS/exFAT
/dev/sda3 223629312 225724415 1047552 82 Linux swap / Solaris
/dev/sda4 336439294 390721535 27141121 5 Extended
/dev/sda5 336439296 338391039 975872 83 Linux
/dev/sda6 338393088 339390463 498688 82 Linux swap / Solaris
/dev/sda7 339392512 368687103 14647296 83 Linux
/dev/sda8 368689152 390721535 11016192 83 Linux
Partition table entries are not in disk order
Run Code Online (Sandbox Code Playgroud)
您可以使用该命令blkid
来显示以下内容:
$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs"
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXX" TYPE="ntfs"
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs"
/dev/sda5: UUID="XXXX" TYPE="ext4"
/dev/sda6: UUID="XXXX" TYPE="LVM2_member"
/dev/mapper/vg_grinchy-lv_root: UUID="XXXX" TYPE="ext4"
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXX" TYPE="swap"
/dev/mapper/vg_grinchy-lv_home: UUID="XXXX" TYPE="ext4"
Run Code Online (Sandbox Code Playgroud)
我已经从上面删除了 UUID,并用 X 替换了它们。blkid
如果您想要不同的输出,该命令也可以采用参数。
例如:
$ blkid -o list
device fs_type label mount point UUID
----------------------------------------------------------------------------------------------------------------------------------
/dev/sda1 ntfs SYSTEM_DRV (not mounted) XXXX
/dev/sda2 ntfs Windows7_OS (not mounted) XXXX
Run Code Online (Sandbox Code Playgroud)
的替代工具blkid
是lsblk
. 您可以使用以下选项列出所有块设备:
$ lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 0 loop
loop1 7:1 0 0 loop
loop2 7:2 0 0 loop
loop3 7:3 0 0 loop
loop4 7:4 0 0 loop
loop5 7:5 0 0 loop
loop6 7:6 0 0 loop
loop7 7:7 0 0 loop
sda 8:0 0 465.8G 0 disk
??sda1 8:1 0 500M 0 part /boot
??sda2 8:2 0 465.3G 0 part
??vg_totoro-lv_root (dm-0) 253:0 0 431.5G 0 lvm /
??vg_totoro-lv_swap (dm-1) 253:1 0 13.8G 0 lvm [SWAP]
??vg_totoro-lv_home (dm-2) 253:2 0 20G 0 lvm /home
sr0 11:0 1 1024M 0 rom
Run Code Online (Sandbox Code Playgroud)
检查它的用法,它需要其他选项。
如果你想要的lsblk
只是显示你的主/逻辑分区,你应该能够通过组合fdisk
和 解析来做到这一点。fdisk -l
如果以 root 身份运行将列出所有分区,并将用以下标记扩展分区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
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其与一些解析结合起来以获得您想要的输出:
$ 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]
Run Code Online (Sandbox Code Playgroud)
我认为这是你能做的最好的事情,因为findmnt
不会显示扩展分区,因为它们永远不会被安装。否则,您可以以相同的方式解析它。