从命令行列出分区标签


91

是否有一条命令将列出所有分区及其标签?sudo fdisk -l并且sudo parted -l默认情况下不显示标签。

编辑:(根据下面的评论)我正在谈论ext2标签-您可以在gparted分区上设置的标签。

EDIT2:目的是列出未安装的分区(所以我知道要安装哪个分区)。


1
标签?什么是标签?您在谈论ext2标签吗?这些与分区表本身无关。
克里斯·杰斯特·杨

嗨@克里斯·杰斯特-杨,谢谢您的评论!我已经在上面尝试澄清-是的,我相信这是我正在谈论的ext2标签...干杯!

4
分区没有标签,但是文件系统有标签。您需要使用多种工具来完成此操作。该blkid工具可以告诉您已知分区的标签。但是要找到该分区,您必须遍历fdisk的输出。
基思

2
@Keith,作为补充说明,我想补充一点,新的GPT分区具有类似于文件系统标签的名称字段。
Cristian Ciupitu 2014年

Answers:


84

使用udev,您可以使用

ls -l /dev/disk/by-label

通过标签显示符号链接到至少一些分区设备节点。

不确定包含的逻辑是什么,可能是标签的存在。


2
至少在我的机器上,确实只有通过标签链接到其中的带有标签的文件系统,如使用Alan Kuras的mount -l建议所确认的那样(?)。

3
嗨,@ Ilkka-谢谢您的回答!确实,ls -la /dev/disk/by-label似乎显示了已卸载分区的标签。因此,我想这可以解决我的问题。尽管,我确实更愿意选择fdiskparted代替:)干杯!

2
对我而言,未显示我的交换分区和已安装分区,但这可能只是巧合。无论如何,sudo lsblk -o name,mountpoint,label,size,uuid为我工作。
Chiel 10 Brinke

128

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

4
感谢您向我展示此工具!请注意,此应用程序适用于普通用户,但只会以root用户身份显示某些信息(包括标签)。
user689893 2014年

1
还会显示未挂载的分区吗?如果是,那么它将解决所提出的问题。
拉维

1
是。如您所见,未安装sdb1和sdb3。
Mikhail Morfikov 2014年

14
或更容易记住lsblk -f,相当于lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT
LeoR

@ user689893-不,仅发生在debian / ubuntu及其衍生产品上。的要点lsblk是普通用户要使用的,因此不需要su / sudo。现在,如果这对您不起作用,那是因为您的发行版开发人员很想念某些东西。
don_crissti 2015年

26

您可能正在寻找一个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

1
这是唯一的建议,到目前为止,关于DDWRT工作
KARTHIKŧ


9

尝试使用mount -l,对我来说很好。


2
@Alan Kuras,您好-感谢您+1的答案!但是,我要列出未安装的分区- mount -l似乎只显示已安装的分区。

7

/ dev /磁盘

在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-idby-labelby-pathby-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
Digger

4

这不会列出所有分区,但是您可以使用来查看和更改您喜欢的分区tune2fs

$ sudo tune2fs -l /dev/sda1

您可以使用诸如此类的命令来获取所有/dev/sda*设备。

$ sudo sh -c 'echo /dev/sda* /dev/mapper/fedora* | xargs -n 1 tune2fs -l'

2

您也可以使用以下命令:

$ sudo udevadm info --query all --path /sys/block/sdb/sdb1 \
     | grep ID_PART_ENTRY_NAME

您可以使用上面的命令打印所有块设备的信息。

$ echo /sys/block/* | xargs -n 1 udevadm info --query all --path

1

e2label不适用于UDF文件系统标签。blkid做到了;

blkid -s LABEL -o value /dev/sdg1

1

如果愿意,您可以将我的bash脚本用于该目的。它实际上比您需要的功能多一点,即它还会显示已使用了多少空间。希望您喜欢它:)而且我也希望输出与我的linux盒一样整洁。(注意:它只会显示真正的硬件,如HDD和DVD-ROM,但这对于我来说已经足够了。)

重要说明:由于,该脚本可能必须在sudo ONCE 下运行blkid。至少在我的发行版中,启动后以普通用户身份运行时blkid -o export输出nil。这是因为,在的“常规用户格式转换”中,实际上会从缓存文件中检索数据(通常是),该文件只能由缓存文件写入,因此需要运行一次才能填充当前数据。blkid/run/blkid/blkid.tabrootsudo

#!/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
           }'

1

在Linux终端(控制台)中,输入:

blkid

其次是 Enter

结果是块设备的列表,每个块设备都带有LABEL和TYPE


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.