磁盘分区格式化及挂载

#!/bin/bash
#########################
# 功能:脚本实现磁盘分区格式化及挂载
#
# 手动输入要分区的磁盘
# 如果已经存在分区,先删除
# 格式化磁盘
#########################

echo "磁盘分区格式化及挂载"
echo -e "\033[31mWARNING:\033[0m"     #提醒用户危险操作
partition_format_mount(){
    fdisk -l 2> /dev/null | grep -o "Disk /dev/[sh]d[a-z]" #显示所有分区

    read -p '选择要分区的磁盘:' disk
    partdisk=$disk

    if [[ $partdisk == "quit" ]];then
        echo "quit"
        exit 7                  #错误退出,非0
    fi

    echo -e "\033[31mWARNING:**************\033[0m"     #提醒用户危险操作
    read -p "确定对$partdisk进行分区?(y/n)" choice

    ################
    until [ "$choice" == 'y' -o "$choice" == 'n' ];do
        read choice
    done 

    lsblk | grep sd[a-z]

    if [ $choice = n ];then
        exit 0
    else
        #============= 删除磁盘分区 =============
        #删除所有分区
        echo "删除$partdisk的所有分区:"
        sleep 1
        echo 'd                    #32-45行echo的内容,和命令行中操作步骤一样    
        w'|fdisk $partdisk &>/dev/null      #返回消息送入/dev/null 设备
        echo "删除$partdisk的所有分区完成"
    fi

    ################
    echo -e "\033[31mWARNING:**************\033[0m"     #提醒用户危险操作
    #格式化磁盘
    read -p "开始对 $partdisk 进行分区(y/n):" choice

    until [ "$choice" == 'y' -o "$choice" == 'n' ];do
        read choice
    done 

    if [ $choice = n ];then
        exit 0
    else
        #============= 磁盘分区 =============
        #磁盘分区,全部分给一个区
        echo "开始给 $partdisk 分区:"        ###
        sleep 1
        echo 'n
        p
        1
        
        
        w'|fdisk $partdisk &>/dev/null          #
        
        echo "$partdisk 分区完成"
        #判断分区是否已经完成
        formatdisk=$partdisk'1'
        echo "formatdisk: $formatdisk"
        echo "fdisk -l | grep $formatdisk"
        if [ $? -eq 0 ] ;then
            #============= 磁盘格式化 =============            
            echo "开始格式化 $partdisk 磁盘" 
            echo "mkfs.ext4 $formatdisk"
            mkfs.ext4 $formatdisk
            #格式化磁盘完成
            echo "格式化磁盘完成"
            sleep 1                             #同步内容花费时间较长,休眠3s否则下面格式化命令无法执行
            
            if [ ! -d "/data/" ];then
                mkdir /data
                echo "/data文件夹不存在,创建/data文件夹"
            fi
            mount $formatdisk /data
            echo "挂载磁盘$formatdisk到/data目录下"
            echo "$formatdisk  /data ext4  defaults  0 0">> /etc/fstab 
        else
            echo -e "\033[33m WARNING:$partdisk分区出现问题,需要重新分区。。。 \033[0m" 

        fi
    fi
    
    # test partion
    echo '>>> result: '
    lsblk | grep sd[a-z]
}

echo -e "\033[31mWARNING:磁盘分区格式化及挂载!\033[0m"     #提醒用户危险操作磁盘分区格式化及创建软连接脚本
partition_format_mount
echo 'Finished!'

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值