#!/bin/bash
# 清屏并显示信息
clear
# 列出所有磁盘及其分区信息
echo "当前系统中的磁盘和分区信息:"
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
# 提示用户输入要格式化的分区名称
read -p "请输入要格式化的磁盘分区(例如:vdb1 或 /dev/vdb1): " PARTITION
# 如果用户输入的不是以 /dev/ 开头,则加上 /dev/
if [[ "$PARTITION" != /dev/* ]]; then
PARTITION="/dev/$PARTITION"
fi
# 获取分区的基本名称
BASENAME=$(basename "$PARTITION")
# 检查用户输入的分区是否存在
if lsblk | grep -q "^${BASENAME}"; then
# 确认操作
read -p "您确定要格式化 ${PARTITION} 吗?此操作将删除所有数据! (yes/no): " CONFIRM
if [ "$CONFIRM" != "yes" ]; then
echo "操作已取消。"
exit 1
fi
# 提示用户输入挂载点目录
read -p "请输入要挂载的目录(将创建在 / 目录下,例如:mydisk): " MOUNT_DIR
# 创建挂载点目录
MOUNT_POINT="/${MOUNT_DIR}"
# 检查挂载点目录是否存在,如果不存在则创建
if [ ! -d "$MOUNT_POINT" ]; then
echo "创建挂载点目录 ${MOUNT_POINT} ..."
sudo mkdir -p "$MOUNT_POINT"
fi
# 卸载分区(如果已挂载)
if mount | grep -q "^${PARTITION} "; then
echo "正在卸载 ${PARTITION} ..."
sudo umount "${PARTITION}"
fi
# 格式化分区为 XFS 文件系统
echo "正在格式化 ${PARTITION} 为 XFS 文件系统..."
sudo mkfs.xfs -f "${PARTITION}"
# 挂载分区
echo "正在挂载 ${PARTITION} 到 ${MOUNT_POINT} ..."
sudo mount "${PARTITION}" "$MOUNT_POINT"
# 确认挂载成功
if mount | grep -q "^${PARTITION} "; then
echo "${PARTITION} 已成功挂载到 ${MOUNT_POINT}。"
# 写入 /etc/fstab 以便系统重启后自动挂载
echo "正在将挂载信息写入 /etc/fstab ..."
UUID=$(sudo blkid -s UUID -o value "${PARTITION}")
FSTAB_ENTRY="UUID=${UUID} ${MOUNT_POINT} xfs defaults 0 0"
if ! grep -qs "${FSTAB_ENTRY}" /etc/fstab; then
echo "${FSTAB_ENTRY}" | sudo tee -a /etc/fstab
echo "挂载信息已写入 /etc/fstab。"
else
echo "挂载信息已存在于 /etc/fstab。"
fi
else
echo "挂载失败。"
fi
else
echo "错误:未找到指定的分区 ${PARTITION}。"
exit 1
fi
最后修改:2024 年 09 月 23 日
© 允许规范转载
1 条评论
博主太厉害了!