Macos 使用shell脚本方式连接NTFS硬盘或USB

本文基于ntfs-3g + macfuse 实现挂载ntfs硬盘,亲测M3芯片 macos15.3.2可用
用法:

# 假如脚本名ntfs_manager.sh
# 进入装载交互
./ntfs_manager.sh -m mount
# 进入卸载交互
./ntfs_manager.sh -m unmount
# 直接进入交互界面
./ntfs_manager.sh 

具备以下核心功能:

  • 智能识别 NTFS 格式存储设备
  • 交互式命令行界面 支持挂载/卸载操作
  • 自动化路径处理 动态生成安全挂载点
  • 状态感知系统 实时反馈设备状态

准备

1. 下载macfuse
https://macfuse.github.io/
2. 终端安装ntfs-3g ,关键驱动
brew install ntfs-3g

具体实现

核心模块解析

1. 色彩化终端输出

RED='\033[0;31m'    # 错误提示
GREEN='\033[0;32m'  # 成功状态
YELLOW='\033[0;33m' # 警告信息
BLUE='\033[0;34m'   # 交互提示
NC='\033[0m'        # 颜色重置

2. NTFS 设备扫描引擎

只筛选ntfs设备

diskutil list | awk -v mode="$mode" '
# 类型匹配规则
ntfs_types["ntfs"] = 1
ntfs_types["msdos"] = 1
ntfs_types["Microsoft Basic Data"] = 1
ntfs_types["Windows_NTFS"] = 1
# 设备状态分析
/Mounted:[[:space:]]+Yes/ {
   
    mounted = 1 }
/Read-Only:[[:space:]]+Yes/ {
   
    read_only = 1 }

# 动态过滤逻辑
if (fs_type in ntfs_types) {
   
   
    target_status = ""
    if (mode == "mount") target_status = "(未挂载)|(只读挂载)"
    if (mode == "unmount") target_status = "(读写挂载)|(只读挂载)"
    
    if (status ~ target_status) {
   
   
        print device, volume_name, status
    }
}

3. 挂载逻辑(关键)

# 安全卸载原有挂载
if ! diskutil unmountDisk "$device_id" >/dev/null 2>&1; then
    echo "[错误] 无法卸载设备 $device_id"
    return 1
fi

# 创建挂载目录
sudo mkdir -p "$mount_point"
if [ ! -d "$mount_point" ]; then
    echo "[错误] 无法创建挂载点目录: $mount_point"
    return 2
fi

# 执行 NTFS 挂载
sudo ntfs-3g "$de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Perfectmans

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值