积分 215 最后登录 2022-5-18 精华 0 阅读权限 30 主题 49 UID 633916 帖子 538 PB币 621 威望 0 贡献 0 技术 0 活跃 601
UID 633916 帖子 538 PB币 621 贡献 0 技术 0 活跃 601
本帖最后由 neroxps 于 2017-2-19 08:41 编辑
【24楼】 由 smileofhp 坛友写脚本共享给大家。在此感谢他无私共享。如果你觉得他的脚本好用,可以给予他评分。
原贴:http://bbs.feng.com/read-htm-tid-10999057.html
我不知道是不是那个威锋网那位兄弟是原创,搜索过好像就只有他那个帖子。
我之前一直用他的脚本来实现 NTFS 读写问题,但是最近出现新问题。
由于我有个 NTFS 的分区已经占用了 Untitled 这个名字,无卷标的磁盘都叫这个名字,而我插入新的无卷标的移动硬盘时,就会变成了Untitled 1,这时候就有空格了,故此无法运行楼主的脚本,我尝试修改了下脚本,注释了 sed 's/\ /\\\ /g 在 $volume 加上引号,发现可用。
原贴版本如下(硬盘名称不能有空格 ):
#!/bin/bash
dev=`df|tail -1`
volume=`echo ${dev##*% }|sed 's/\ /\\\ /g'`
dev=${dev%% *}
diskutil info $dev|grep NTFS>/dev/null
if [ $? -ne 0 ] ; then
echo "最近挂载的磁盘:$volume 不是 NTFS 磁盘! 按 Return 键退出"
read
else
diskutil umount $volume>/dev/null
echo "请输入用户 ${USER} 的密码"
sudo mkdir $volume
sudo mount -t ntfs -o rw,auto,nobrowse $dev $volume>/dev/null 2>&1
if [ $? -ne 0 ] ; then
#ref:http://apple.stackexchange.com/a/170011
echo "磁盘需要在Windows上经过检查、修复才能挂载为可写!"
echo "按 Return 键退出"
sudo umount $volume>/dev/null 2>&1
sudo rm -r $volume
read
exit
fi
open $volume
echo "按 Return 键卸载 $volume"
read
until sudo umount $volume
do
echo "请先关掉正在占用 $volume 的程序,然后按 Return 键卸载 $volume"
read
done
fi
exit 复制代码
我修改版本如下 (修复硬盘名称不能有空格 ):
#!/bin/bash
dev=`df|tail -1`
volume=`echo ${dev##*% } #|sed 's/\ /\\\ /g'`
dev=${dev%% *}
diskutil info $dev|grep NTFS>/dev/null
if [ $? -ne 0 ] ; then
echo "最近挂载的磁盘:$volume 不是 NTFS 磁盘! 按 Return 键退出"
read
else
diskutil umount "$volume">/dev/null
echo "请输入用户 ${USER} 的密码"
sudo mkdir "$volume"
sudo mount -t ntfs -o rw,auto,nobrowse $dev "$volume">/dev/null 2>&1
if [ $? -ne 0 ] ; then
#ref:http://apple.stackexchange.com/a/170011
echo "磁盘需要在Windows上经过检查、修复才能挂载为可写!"
echo "按 Return 键退出"
sudo umount "$volume">/dev/null 2>&1
sudo rm -r "$volume"
read
exit
fi
open "$volume"
echo "按 Return 键卸载 $volume"
read
until sudo umount "$volume"
do
echo "请先关掉正在占用 $volume 的程序,然后按 Return 键卸载 $volume"
read
done
fi
exit 复制代码
使用方法(直接复制原贴):
将上面的代码存到一个文本文件中,给文件起个名,比如:ntfs.sh。然后将 ntfs.sh 保存到spotlight能够搜到的地方,比如“应用程序”文件夹。然后打开“终端”应用,执行如下命令:
chmod +x /Applications/ntfs.sh 复制代码
原理:判断最新插入的存储设备是否ntfs分区格式,若是则调用mac原生ntfs驱动,挂载成可写分区。
注意: 1.磁盘名称不能有空格!(用我修改的版本的就可以)
2.若提示: 磁盘需要在Windows上经过检查、修复才能挂载为可写! 是因为磁盘经受过强制拔出,导致文件系统变脏,不能挂载为可写。解决办法:直接拔下磁盘,找个Windows电脑或虚拟机,使用 Windows 自带的磁盘工具检查并修复磁盘。
写在最后:不知道论坛里是否已经有这个贴,我搜索过一样的名字,和搜索过关键字,并未发现类似贴。
我也不懂 Bash ,不知道是否这样写是否规范,如果有问题请反馈哈!
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册