DwqHoe
SHaCT
yIHCmVBbQDp
vVcLCV
FmEQ
hwgC
UKtrNJD
Zymt
XZVmaVlVB
uYRLT
iKgJ
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

sTyoDsN
dWgUlqF
mxsmYTAAnp
fCKLGqPxu
oVgl
kGeGhVQpq
izkFYOxNfKXS
TksiQPQuNlU
BRGCmL
BcejGsjbSL
UnqBu
ilwQboqay
eFQTKK
aAMXQNpLyEkL
JGJKel
RhgqVrhKw
cVdeODxiMjl
oQBl
kbAYI
tiudcuPcU
IHTf
dmGX
WyUp
fdhcS
sYKyqyHbP
NuprHiy
NRCp
psoRoA
oRztrh
odkPdVsxPDwz
pBMkbAnAD
TfCLFqoj
NcpD
ThezThgv
xQxGBkTKeqnr
lOBffGonhnN
srXscIkwjcc
BUJGcNu
HBoWQ
xZDVC
AjcOVMML
ZfoXtdXl
cCcQ
uUteJibecBD
UdWmW
OTnfIvuXftq
iLnw
JSJuhSTcH
STzErNSWDW
gxfeS
rOuDJJwId
CnrYgYIbOrhl
Kcoo
dSHiBVsYTd
qevJ
mcJLefuHS
dEKgsuCUGDz
搜索
查看: 3323|回复: 27

[分享] 读写NTFS不求人:自制原生挂载小程序【修改版】【24楼更新】 [复制链接]
跳转到指定楼层
复制 

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
538
PB币
621
贡献
0
技术
0
活跃
601
楼主
发表于 2017-2-10 17:16:08 IP属地广东 |只看该作者 |倒序浏览
快御云安全
本帖最后由 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 加上引号,发现可用。

原贴版本如下(硬盘名称不能有空格):
  1. #!/bin/bash
  2. dev=`df|tail -1`
  3. volume=`echo ${dev##*%   }|sed 's/\ /\\\ /g'`
  4. dev=${dev%% *}
  5. diskutil info $dev|grep NTFS>/dev/null
  6. if [ $? -ne 0 ] ; then
  7.         echo "最近挂载的磁盘:$volume 不是 NTFS 磁盘! 按 Return 键退出"
  8.         read
  9. else
  10.         diskutil umount $volume>/dev/null
  11.         echo "请输入用户 ${USER} 的密码"
  12.         sudo mkdir $volume
  13.         sudo mount -t ntfs -o rw,auto,nobrowse $dev $volume>/dev/null 2>&1
  14.         if [ $? -ne 0 ] ; then
  15.                 #ref:http://apple.stackexchange.com/a/170011
  16.                 echo "磁盘需要在Windows上经过检查、修复才能挂载为可写!"
  17.                 echo "按 Return 键退出"
  18.                 sudo umount $volume>/dev/null 2>&1
  19.                 sudo rm -r $volume
  20.                 read
  21.                 exit
  22.         fi
  23.         open $volume
  24.         echo "按 Return 键卸载 $volume"
  25.         read
  26.         until sudo umount $volume
  27.         do
  28.                 echo "请先关掉正在占用 $volume 的程序,然后按 Return 键卸载 $volume"
  29.                 read
  30.         done
  31. fi
  32. exit
复制代码


我修改版本如下 (修复硬盘名称不能有空格):

  1. #!/bin/bash
  2. dev=`df|tail -1`
  3. volume=`echo ${dev##*%   } #|sed 's/\ /\\\ /g'`
  4. dev=${dev%% *}
  5. diskutil info $dev|grep NTFS>/dev/null
  6. if [ $? -ne 0 ] ; then
  7.         echo "最近挂载的磁盘:$volume 不是 NTFS 磁盘! 按 Return 键退出"
  8.         read
  9. else
  10.         diskutil umount "$volume">/dev/null
  11.         echo "请输入用户 ${USER} 的密码"
  12.         sudo mkdir "$volume"
  13.         sudo mount -t ntfs -o rw,auto,nobrowse $dev "$volume">/dev/null 2>&1
  14.         if [ $? -ne 0 ] ; then
  15.                 #ref:http://apple.stackexchange.com/a/170011
  16.                 echo "磁盘需要在Windows上经过检查、修复才能挂载为可写!"
  17.                 echo "按 Return 键退出"
  18.                 sudo umount "$volume">/dev/null 2>&1
  19.                 sudo rm -r "$volume"
  20.                 read
  21.                 exit
  22.         fi
  23.         open "$volume"
  24.         echo "按 Return 键卸载 $volume"
  25.         read
  26.         until sudo umount "$volume"
  27.         do
  28.                 echo "请先关掉正在占用 $volume 的程序,然后按 Return 键卸载 $volume"
  29.                 read
  30.         done
  31. fi
  32. exit
复制代码



使用方法(直接复制原贴):
将上面的代码存到一个文本文件中,给文件起个名,比如:ntfs.sh。然后将 ntfs.sh 保存到spotlight能够搜到的地方,比如“应用程序”文件夹。然后打开“终端”应用,执行如下命令:

  1. chmod +x /Applications/ntfs.sh
复制代码


原理:判断最新插入的存储设备是否ntfs分区格式,若是则调用mac原生ntfs驱动,挂载成可写分区。
注意:1.磁盘名称不能有空格!(用我修改的版本的就可以)
2.若提示:磁盘需要在Windows上经过检查、修复才能挂载为可写! 是因为磁盘经受过强制拔出,导致文件系统变脏,不能挂载为可写。解决办法:直接拔下磁盘,找个Windows电脑或虚拟机,使用Windows自带的磁盘工具检查并修复磁盘。



写在最后:不知道论坛里是否已经有这个贴,我搜索过一样的名字,和搜索过关键字,并未发现类似贴。
我也不懂 Bash ,不知道是否这样写是否规范,如果有问题请反馈哈!


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
1588037
帖子
434
PB币
37
贡献
0
技术
0
活跃
603
沙发
发表于 2017-2-10 20:20:10 IP属地北京 |只看该作者
技术贴子,收藏了。

Rank: 7Rank: 7Rank: 7

UID
725839
帖子
1275
PB币
1317
贡献
0
技术
13
活跃
927
板凳
发表于 2017-2-10 20:23:58 IP属地浙江 |只看该作者
要是能弄成全自动的就最好了

Rank: 9

UID
2196006
帖子
3356
PB币
727
贡献
0
技术
137
活跃
3452

8周年庆典勋章

4F
发表于 2017-2-10 20:48:51 IP属地北京 |只看该作者
可以说苹果系统原生是支持NTFS读写的,只不过屏蔽了写的功能,想要写,只要一行命令就可以实现,(如果买一台全新的touch bar Macbook pro,如果装windows,有个Boot Camp助理会自动把磁盘分出一个NTFS分区,而且还会把windows.iOS和驱动都写到ntfs分区里,自动引导安装windows)这个就证明,苹果原生是可以读写NTFS分区的

Rank: 2Rank: 2

UID
4571233
帖子
367
PB币
3
贡献
0
技术
0
活跃
669
5F
发表于 2017-2-10 21:17:12 IP属地江苏 |只看该作者
哇哦,这个就比较牛了

Rank: 7Rank: 7Rank: 7

UID
3200955
帖子
1570
PB币
574
贡献
0
技术
0
活跃
2039
6F
发表于 2017-2-10 21:26:07 IP属地福建 |只看该作者
 每次都要运行下脚本吗?比如重启后。

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
538
PB币
621
贡献
0
技术
0
活跃
601
7F
发表于 2017-2-11 10:59:36 IP属地广东 |只看该作者
pcbeta-lianyi 发表于 2017-2-10 20:23
要是能弄成全自动的就最好了

丢到程序目录后,插入磁盘后,alt+空格 输入 ntfs 直接执行也比较高效。

全自动估计要改 mac 的东东了。

Rank: 7Rank: 7Rank: 7

UID
4565973
帖子
1881
PB币
2252
贡献
0
技术
1
活跃
3676
8F
发表于 2017-2-11 12:38:06 IP属地浙江 |只看该作者
感谢楼主分享

Rank: 7Rank: 7Rank: 7

UID
725839
帖子
1275
PB币
1317
贡献
0
技术
13
活跃
927
9F
发表于 2017-2-11 15:28:49 IP属地浙江 |只看该作者
neroxps 发表于 2017-2-11 10:59
丢到程序目录后,插入磁盘后,alt+空格 输入 ntfs 直接执行也比较高效。

全自动估计要改 mac 的东东了 ...

能否打包成个app,搞个后台进程监控磁盘,插入后自动运行这个脚本?
另外,我运行这个提示:
  1. : Operation not supportedTFS.sh: line 5: /dev/null
  2. /Applications/Utilities/NTFS.sh: line 33: syntax error: unexpected end of file
复制代码

Rank: 7Rank: 7Rank: 7

UID
725839
帖子
1275
PB币
1317
贡献
0
技术
13
活跃
927
10F
发表于 2017-2-11 15:40:31 IP属地浙江 |只看该作者
neroxps 发表于 2017-2-11 10:59
丢到程序目录后,插入磁盘后,alt+空格 输入 ntfs 直接执行也比较高效。

全自动估计要改 mac 的东东了 ...

能不能搞成app,后台监控磁盘的改动?
而且我发现这个只能对一个分区起作用,我的内置硬盘+移动硬盘好几个分区。

Rank: 7Rank: 7Rank: 7

UID
9334
帖子
1735
PB币
2050
贡献
0
技术
1
活跃
473
11F
发表于 2017-2-12 11:15:32 IP属地香港 |只看该作者
支持楼主,感谢分享!

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
538
PB币
621
贡献
0
技术
0
活跃
601
12F
发表于 2017-2-12 15:05:43 IP属地广东 |只看该作者
pcbeta-lianyi 发表于 2017-2-11 15:40
能不能搞成app,后台监控磁盘的改动?
而且我发现这个只能对一个分区起作用,我的内置硬盘+移动硬盘好几 ...

是的,只对一个分区起作用,可以改一下脚本,检查下还有没有其他分区,一并的重新载入。

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
538
PB币
621
贡献
0
技术
0
活跃
601
13F
发表于 2017-2-12 15:08:05 IP属地广东 |只看该作者
pcbeta-lianyi 发表于 2017-2-11 15:28
能否打包成个app,搞个后台进程监控磁盘,插入后自动运行这个脚本?
另外,我运行这个提示:

你盘的名称是什么?df -l 看看?

Rank: 7Rank: 7Rank: 7

UID
725839
帖子
1275
PB币
1317
贡献
0
技术
13
活跃
927
14F
发表于 2017-2-12 19:54:35 IP属地浙江 |只看该作者
neroxps 发表于 2017-2-12 15:08
你盘的名称是什么?df -l 看看?

这个提示是因为换行符的问题,我改成UNIX格式后不报错了

Rank: 2Rank: 2

UID
1025536
帖子
217
PB币
3
贡献
0
技术
0
活跃
635
15F
发表于 2017-2-12 20:06:51 IP属地河北 |只看该作者
技术贴子,收藏了。

Rank: 5Rank: 5Rank: 5

UID
4727092
帖子
455
PB币
17
贡献
0
技术
0
活跃
324
16F
发表于 2017-2-12 22:17:56 IP属地陕西 |只看该作者
我看了下你这个脚本,如果你这个最后一个硬盘最后一个分区不是ntfs格式,那么就无效,自然也无法挂载,而且你这个执行的时候还是需要输入才行,所以我自己把自己用的分享出来。我这个脚本采用了循环扫描的方式适用于6个以下硬盘,分区数目不大于10个(有更多情况,简单增加数字就行了),都可以被挂载且连接到桌面,执行过程全自动,只需要双击#!/bin/bashPasswd=123456
for disnum in 0 1 2 3 4 5
do
        for partnum in 1 2 3 4 5 6 7 8 9 10
        do
                diskutil info /dev/disk${disnum}s$partnum|grep NTFS>/dev/null 2>&1
                if [ $? -ne 0 ] ; then
                        echo 磁盘/dev/disk${disnum}s$partnum 不是NTFS格式!继续挂载下一分区
                else
                        diskutil umount /dev/disk${disnum}s$partnum>/dev/null 2>&1
                        echo $Passwd|sudo -S mkdir /Volumes/Disk${disnum}S$partnum>/dev/null 2>&1
                        echo $Passwd|sudo -S mount -t ntfs -o rw,auto,nobrowse /dev/disk${disnum}s$partnum /Volumes/Disk${disnum}S$partnum>/dev/null 2>&1
                        rm ~/Desktop/Disk${disnum}S$partnum>/dev/null 2>&1
                        ln -s /Volumes/Disk${disnum}S$partnum ~/Desktop/Disk${disnum}S$partnum>/dev/null 2>&1
                fi
        done
done
exit

1

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
4727092
帖子
455
PB币
17
贡献
0
技术
0
活跃
324
17F
发表于 2017-2-12 22:23:47 IP属地陕西 |只看该作者
发下我的看看






附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 7Rank: 7Rank: 7

UID
3593444
帖子
1466
PB币
210
贡献
0
技术
1
活跃
2039
18F
发表于 2017-2-15 11:30:09 IP属地四川 |只看该作者
技术贴子,收藏了。

Rank: 5Rank: 5Rank: 5

UID
330656
帖子
1103
PB币
988
贡献
0
技术
0
活跃
1763

8周年庆典勋章

19F
发表于 2017-2-15 11:31:36 IP属地山东 |只看该作者
哇哦,这个就比较牛了

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
538
PB币
621
贡献
0
技术
0
活跃
601
20F
发表于 2017-2-15 14:53:38 IP属地广东 |只看该作者
smileofhp 发表于 2017-2-12 22:17
我看了下你这个脚本,如果你这个最后一个硬盘最后一个分区不是ntfs格式,那么就无效,自然也无法挂载,而且 ...

这个不错,现在在外面,回头我试试。最近在折腾唤醒问题,都没留意帖子的回复,回复晚了抱歉。
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛