如果我运行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 }'
尝试:
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。
-广告。