是否有一条命令将列出所有分区及其标签?sudo fdisk -l
并且sudo parted -l
默认情况下不显示标签。
编辑:(根据下面的评论)我正在谈论ext2标签-您可以在gparted
分区上设置的标签。
EDIT2:目的是列出未安装的分区(所以我知道要安装哪个分区)。
blkid
工具可以告诉您已知分区的标签。但是要找到该分区,您必须遍历fdisk的输出。
是否有一条命令将列出所有分区及其标签?sudo fdisk -l
并且sudo parted -l
默认情况下不显示标签。
编辑:(根据下面的评论)我正在谈论ext2标签-您可以在gparted
分区上设置的标签。
EDIT2:目的是列出未安装的分区(所以我知道要安装哪个分区)。
blkid
工具可以告诉您已知分区的标签。但是要找到该分区,您必须遍历fdisk的输出。
Answers:
使用udev,您可以使用
ls -l /dev/disk/by-label
通过标签显示符号链接到至少一些分区设备节点。
不确定包含的逻辑是什么,可能是标签的存在。
ls -la /dev/disk/by-label
似乎显示了已卸载分区的标签。因此,我想这可以解决我的问题。尽管,我确实更愿意选择fdisk
或parted
代替:)干杯!
sudo lsblk -o name,mountpoint,label,size,uuid
为我工作。
lsblk
例如,命令
sudo lsblk -o name,mountpoint,label,size,uuid
输出:
NAME MOUNTPOINT LABEL SIZE UUID
sda 1.4T
├─sda1 /boot boot 953M f557b9f0-edb5-42bb-94d8-27bc03c3c2c7
├─sda2 46.6G 727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0) 46.6G P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│ ├─debian_crypt-swap (dm-1) [SWAP] 2G 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0
│ ├─debian_crypt-tmp (dm-2) /tmp tmp 5G 93fc8219-f985-45fb-bd5c-2c7940a7512d
│ ├─debian_crypt-home (dm-3) /home home 6G 12e8566c-8f0f-45ec-8524-6d9d9ee91eae
│ └─debian_crypt-root (dm-4) / root 33.6G 9685570b-4c9e-43ea-815e-49d10dc7a1bf
├─sda3 651.9G d3e0436c-85f6-45c6-9d8f-28b79ee06102
│ └─crypt_gusto (dm-8) /media/Gusto Gusto 651.9G 0c084508-cb8b-4b61-832d-6b85273f33c4
├─sda4 1K
├─sda5 298G 5063da5f-9b68-43de-914c-32b89622bcc8
│ └─crypt_kabi (dm-7) /media/Kabi Kabi 298G e6a0b66c-8fe9-4e7b-9d54-7b2b430e109d
├─sda6 213.6G 5129d860-bb41-4393-b4b1-f8af53d9155d
│ └─crypt_zami (dm-6) /media/Zami Zami 213.6G 19101155-6070-4f37-b39d-19f28867c66b
├─sda7 /media/Server Server 85.6G a9f4dae5-901c-4f49-bb30-592de3000713
└─sda8 100.6G dc7f4586-a33d-4707-98e9-8b55c559b0d2
└─crypt_grafi (dm-5) /media/Grafi Grafi 100.6G 5e3242e1-ec7a-4806-92f7-88a126feea94
sdb 14.5G
├─sdb1 DEBIAN_LIVE 3G 6bf4d915-2b62-444e-a2c8-16307769b5c2
├─sdb2 2G 90ec6f73-8fdb-4c8d-aebd-cadd0f51b412
│ └─crypt_sdb2 (dm-10) /mnt data 2G 91e779dd-0a3f-40b2-8ad0-257d860541a6
└─sdb3 linux 9.5G 14a783a4-96dd-4a85-8de7-6e8eea230594
loop0 1000M a3be80bf-0f2c-44ed-8de5-d60e3b19c01a
└─crypt_dropbox (dm-9) /media/Dropbox Dropbox 998M 8461e2cf-ae17-449b-8ee5-29cc88688b8b
zram0 [SWAP] 250M f8254ae5-5ae6-4fda-b8ef-83f25c405894
zram1 [SWAP] 250M 7e7ed90d-731c-422a-bf9b-828f09b80502
您可以按任意顺序指定大量列:
Available columns:
NAME device name
KNAME internal kernel device name
MAJ:MIN major:minor device number
FSTYPE filesystem type
MOUNTPOINT where the device is mounted
LABEL filesystem LABEL
UUID filesystem UUID
RO read-only device
RM removable device
MODEL device identifier
SIZE size of the device
STATE state of the device
OWNER user name
GROUP group name
MODE device node permissions
ALIGNMENT alignment offset
MIN-IO minimum I/O size
OPT-IO optimal I/O size
PHY-SEC physical sector size
LOG-SEC logical sector size
ROTA rotational device
SCHED I/O scheduler name
RQ-SIZE request queue size
TYPE device type
DISC-ALN discard alignment offset
DISC-GRAN discard granularity
DISC-MAX discard max bytes
DISC-ZERO discard zeroes data
lsblk -f
,相当于lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT
lsblk
是普通用户要使用的,因此不需要su / sudo。现在,如果这对您不起作用,那是因为您的发行版开发人员很想念某些东西。
您可能正在寻找一个blkid命令。结果类似于以下内容:
$ sudo blkid /dev/mapper/vg_rootdisk-lv_var
/dev/mapper/vg_rootdisk-lv_var: LABEL="LV_VAR" UUID="08520908-03cd-4e42-a4e4-0f5a771be16c" TYPE="ext4"
另一种选择是使用udevadm命令,这可能会给您带来远远超出您所需的信息:
$ sudo udevadm info --query=all --name=/dev/mapper/vg_rootdisk-lv_var
尝试使用此命令:
e2label /dev/sda2
在Linux内核的较新版本中,现在可以在此处找到此信息/dev/disk
。
$ ls -l /dev/disk
total 0
drwxr-xr-x 2 root root 300 Mar 4 18:43 by-id
drwxr-xr-x 2 root root 140 Mar 4 18:21 by-label
drwxr-xr-x 2 root root 80 Mar 4 18:18 by-path
drwxr-xr-x 2 root root 200 Mar 4 2015 by-uuid
所以,你可以找到它by-id
,by-label
,by-path
或by-uuid
。
代号
$ ls -l /dev/disk/by-id
total 0
lrwxrwxrwx. 1 root root 9 Jan 11 17:01 ata-Optiarc_DVD_RW_AD-7930H -> ../../sr0
lrwxrwxrwx. 1 root root 9 Jan 11 17:01 ata-ST95005620AS_5YX1K0Q5 -> ../../sda
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 ata-ST95005620AS_5YX1K0Q5-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 ata-ST95005620AS_5YX1K0Q5-part2 -> ../../sda2
...
...
随便
$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../sda1
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../dm-1
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../dm-0
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../dm-2
其中xxxxxx
将是实际的UUID,例如5ece678c-1234-5678-12e3-88c06ec11111
。
按标签
$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 Mar 4 18:21 LABEL1 -> ../../sda4
lrwxrwxrwx 1 root root 10 Mar 4 18:17 LABEL2 -> ../../sda3
lrwxrwxrwx 1 root root 10 Mar 4 18:21 LABEL3 -> ../../sda6
lrwxrwxrwx 1 root root 10 Mar 4 18:42 LABEL4 -> ../../sda7
lrwxrwxrwx 1 root root 10 Mar 4 18:20 LABEL5 -> ../../sda5
其中LABEL1
,,LABEL2
...等是标签,显示了指向实际分区的符号链接(例如/dev/sda3
)。
ls -l /dev/disk/by-label/ | sort -k10
e2label不适用于UDF文件系统标签。blkid做到了;
blkid -s LABEL -o value /dev/sdg1
如果愿意,您可以将我的bash脚本用于该目的。它实际上比您需要的功能多一点,即它还会显示已使用了多少空间。希望您喜欢它:)而且我也希望输出与我的linux盒一样整洁。(注意:它只会显示真正的硬件,如HDD和DVD-ROM,但这对于我来说已经足够了。)
重要说明:由于,该脚本可能必须在sudo
ONCE 下运行blkid
。至少在我的发行版中,启动后以普通用户身份运行时blkid -o export
将输出nil。这是因为,在的“常规用户格式转换”中,实际上会从缓存文件中检索数据(通常是),该文件只能由缓存文件写入,因此需要运行一次才能填充当前数据。blkid
/run/blkid/blkid.tab
root
sudo
#!/bin/bash
# LICENSE: GPL
if [[ $(id -u) -ne 0 ]]; then
if [[ ! -s /run/blkid/blkid.tab ]]; then
# no cache file found when run as regular user
# this will require one run under sudo to populate cache file
echo -e "Cache file does not exist or is empty.\nPlease give your root password to continue:\n\n"
sudo blkid >/dev/null
fi
fi
df -P |
sort |
awk 'BEGIN {
fmthdr = "%-12s%-22s%-10s\t%-5s\n"
# since we want to use single quotes for showing label names, we had better
# replace the problematic single quote character by its hex representation, "\x27"
fmtlin_w_qu = "%-12s\x27%-17s\x27\t %-10s\t%4s used\n"
fmtlin_wo_qu = "%-12s%-17s\t %-10s\t%4s used\n"
printf fmthdr, " Device ", "Volume Label", "File System", "Storage usage"
printf fmthdr, "---------", "------------", "-----------", "-------------"
}
/^\/dev\/[sh]/{
lab = "" # CLEAR lab w/every run (very important!)
("blkid -o export "$1" | grep LABEL | cut -f2 -d=") | getline lab
("blkid -o export "$1" | grep TYPE | cut -f2 -d=") | getline fs
if (lab == "") {
lab = "<none>"
fmtlin = fmtlin_wo_qu
}
else
fmtlin = fmtlin_w_qu
printf fmtlin, $1, lab, fs, $5
}'
我也使用了lsblk
上面提到的方法,但是我发现以下选项更适合:
sudo lsblk -o name,mountpoint,tran,fstype,label,size