如何在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

您可以使用pipe道redirect输出

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

尝试:

 cat /proc/partitions 

要么

 ls /dev/sd* 

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

这是一个Perl版本:

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

打印:

 /dev/sda /dev/sdc 

这显示了挂载的分区作为空格分隔的列表:

 echo $(mount -t ext2,ext3 | cut -f1 -d' ') 

您可以添加其他文件系统types。

这里有一些其他的select,如果你可以做一些假设(我喜欢/ proc /分区,但是,只要你筛选主要数字,所以你不拿起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 

我认为最好的解决办法是只使用一个命令,如:

  awk '/[az]$/ {print $4}' /proc/partitions 

或者如果您有md或dm设备并且只想显示sata(sdx)驱动器:

  awk '$4 ~ /^sd.$/ { print $4 }' /proc/partitions 

也不是很漂亮,仍然是单行,它使用更多的命令,但工作:

  cat /proc/partitions | awk '{print $4}' | grep sd[az] | grep -v [0-9] 

只是我的2美分…希望它有帮助!

我猜想像你使用的那个命令,或df(它列出了设备,同时显示空闲和使用的空间)将不会输出空间分隔的数据,因为你想要的数据。 你需要使用像sed'piped'这样的string处理命令来输出以前的磁盘命令,并获得所需的oputput。

-广告。