写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:

1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;

2、当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,n就退出;否则,让用户重新选择;

3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其创建三个主分区,第一个为20M,第二个为512M, 第三个为128M,且第三个为swap分区类型;(提示:将分区命令通过echo传送给fdisk即可实现)



#!/bin/bash
#: Title: auto_disk.sh
#: Synopsis:
#: DateTime: 2014-05-04 23:13
#: Version: 0.1
#: Author: dengyw
#: Options:
#
PARTS=`fdisk -l 2>/dev/null |grep "^Disk /dev/[sh]d[a-z]"`   #显示磁盘分区信息
echo -e "$PARTS"
read -p "please choice the disk of you need: {hda|sda} or q for quit: " disk  #输入要分区的磁盘
until [ $disk == 'q' ];do
while :;do # 判断输入格式是否正确,不正确重新输入
if [ $disk = "hda" ] || [ $disk = "sda" ];then
   break
fi
read -p "please choice the disk of you need: {hda|sda} or q for quit: " disk
done
case $choice in
y|Y)
dd if=/dev/zero of=/dev/$disk bs=512 count=1 && echo "clean the disk " #将用户所需的磁盘的MBR格式化
sync
sleep 3
echo '
n
p
1
+500M
n
p
2
read -p "please choice the disk of you need: {hda|sda} or q for quit: " disk
done
read -p "waring !!! Next you do it will wipe your disk!!! Countinue(y/n)?" choice #提示并警告用户接下操作,将会格式化操作并分区
case $choice in
y|Y)
dd if=/dev/zero of=/dev/$disk bs=512 count=1 && echo "clean the disk " #将用户所需的磁盘的MBR格式化
sync
sleep 3
echo '
n
#!/bin/bash
#
PARTS=`fdisk -l 2>/dev/null |grep "^Disk /dev/[sh]d[a-z]"`   #显示磁盘分区信息
echo -e "$PARTS"
read -p "please choice the disk of you need: {hda|sda} or q for quit: " disk  #输入要分区的磁盘
until [ $disk == 'q' ];do
while :;do # 判断输入格式是否正确,不正确重新输入
if [ $disk = "hda" ] || [ $disk = "sda" ];then
   break
fi
read -p "please choice the disk of you need: {hda|sda} or q for quit: " disk
done
read -p "waring !!! Next you do it will wipe your disk!!! Countinue(y/n)?" choice #提示并警告用户接下操作,将会格式化操作并分区
case $choice in
y|Y)
dd if=/dev/zero of=/dev/$disk bs=512 count=1 && echo "clean the disk " #将用户所需的磁盘的MBR格式化
sync
sleep 3
echo '
n
p
1
+20M
n
p
2
+512M
n
p
3
+128M
t
3
82
w'| fdisk /dev/$disk &>/dev/null && echo "the disk has been parted." #将分区的信息传递给fdisk,开始分区
partprobe /dev/$disk
sleep 3  #分区之后要用sleep命令让系统“沉睡”13,这样可以让分区的信息真正的同步进硬盘,而不至于格式化出错。
mke2fs -j /dev/${disk}1 &>/dev/null  #格式化文件系统
mke2fs -j /dev/${disk}2 &>/dev/null
mkswap /dev/${disk}3  &>/dev/null
exit 0
;;
n|N)
exit 0
;;
*)
exit 0
;;
esac
done