我正在寻找一种方法来获取挂载磁盘映像的.dmg路径,仅使用挂载点。从挂载点获取.dmg的路径
我想编写一个“简单”的Finder服务,它弹出磁盘映像并破坏伴随的.dmg。弹出是微不足道的,但我不知道如何找出.dmg的路径,只给出挂载点。
diskutil似乎并不知道或不说。
这是一个脚本,所以首选基于AppleScript或shell的建议。
我正在寻找一种方法来获取挂载磁盘映像的.dmg路径,仅使用挂载点。从挂载点获取.dmg的路径
我想编写一个“简单”的Finder服务,它弹出磁盘映像并破坏伴随的.dmg。弹出是微不足道的,但我不知道如何找出.dmg的路径,只给出挂载点。
diskutil似乎并不知道或不说。
这是一个脚本,所以首选基于AppleScript或shell的建议。
使用hdiutil info
可获取有关当前安装的图像的信息。然后 使用hdiutil detach /Mount/Point
卸除所有文件系统,并分离图像。
如果安装了多个图像,则需要解析hdiutil info
的输出以找到正确的图像路径。使用plist输出格式hdiutil info -plist
可能会更健壮,并将其运行到比如说带有plistlib的python脚本或使用来自System Events
的Property List Suite
的AppleScript中。
这里有一个快速而脏的python脚本给你一个想法。这很容易使用Python解释器需要探讨:
>>> import plistlib
>>> from subprocess import Popen, PIPE
>>> output = Popen(["hdiutil", "info", "-plist"], stdout=PIPE).communicate()[0]
>>> pl = plistlib.readPlistFromString(output)
>>> for image in pl['images']:
... for se in image['system-entities']:
... if se.get('mount-point') == '/Volumes/blah':
... print image['image-path']
/Path/To/blah.dmg
启动终端,执行:
$ cd /Volumes
$ hdutil info
的怀疑DMG-文件的位置将显示图像路径
cd
下到位置,并做:
$ ls filename
在Finder中卸载卷,最后在终端:
$ rm filename
祝你好运。
我不认为你会得到一个基于AppleScript或shell的建议,因为你可能不得不与驱动程序或至少它的用户代理对话。 – 2009-12-22 23:43:47
我认为可能有像hdiutil或diskutil这样可以帮助,或者也许在装载磁盘映像上的Finder属性。 – wbg 2009-12-22 23:53:36