如何在 Linux 系统上显示可用磁盘?

如何在 Linux 系统上显示可用磁盘?

如果我跑fdisk -l我得到的输出为:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0003ad9d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1306    10490413+  83  Linux
/dev/sda2            1307        2612    10490445   83  Linux

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
        255 heads, 63 sectors/track, 14593 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Disk identifier: 0x0003ad9d

       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1        1306    10490413+  83  Linux
    /dev/sdb2            1307        2612    10490445   83  Linux

我怎样才能仅显示系统上可用的磁盘,使得它们之间可能有空格,如下所示:

/dev/sda /dev/sdb /dev/sdc

答案1

您可以使用管道来重定向输出

 fdisk -l | grep ^Disk | awk -F:  '{ print $1 }' |  awk -F" "  '{ print $2 }'
  • fisk -l:获取完整磁盘输出
  • grep Disk:过滤以 Disk 开头的行
  • awk -F: '{ print $1 }': 获取分隔符为“:”的第一部分
  • awk -F" " ‘{ print $2 }’: 获取分隔符为空格的第二部分

答案2

尝试:

cat /proc/partitions

或者

ls /dev/sd*

这将列出所有可用的分区!

答案3

这是一个 perl 版本:

fdisk -l | perl -n -e 'if (m{^Disk (\/.*):})  { print $1," "} END { print "\n"}'

印刷:

/dev/sda /dev/sdc 

答案4

这里还有其他一些替代方案,如果您可以做出某些假设(我喜欢 /proc/partitions,只要您根据主要数字进行过滤,这样您就不会选择 LVM 卷等)

假设您的磁盘都是本地的(即不是 SAN):

user@host [/home/q0px]
$ ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 Dec  5 01:27 pci-0000:00:1f.1-ide-0:0 -> ../../hda

如果您的分区都有 UUID(也适用于 SAN 设备)

user@host [/home/q0px]
$ ls -l /dev/disk/by-uuid 
total 0
lrwxrwxrwx 1 root root 18 Dec  5 01:27 dc13d5cf-ba98-4339-99c5-0136177f7e22 -> ../../cciss/c0d0p1

如果您的分区都有标签(对于 SAN 设备也是如此):

user@host [/home/q0px]
$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 18 Dec  5 01:27 boot -> ../../cciss/c0d0p1

相关内容