我正在寻找一种方法,只通过挂载点获取已挂载磁盘映像的.dmg路径。
我想编写一个“简单”的Finder服务,它将弹出磁盘映像并将其附带的.dmg移到垃圾箱中。弹出操作很简单,但是我不知道如何仅通过挂载点确定.dmg的路径。
diskutil 似乎不知道或不会显示相应信息。
由于这是脚本,因此更倾向于基于AppleScript或shell的建议。
我正在寻找一种方法,只通过挂载点获取已挂载磁盘映像的.dmg路径。
我想编写一个“简单”的Finder服务,它将弹出磁盘映像并将其附带的.dmg移到垃圾箱中。弹出操作很简单,但是我不知道如何仅通过挂载点确定.dmg的路径。
diskutil 似乎不知道或不会显示相应信息。
由于这是脚本,因此更倾向于基于AppleScript或shell的建议。
使用 hdiutil info
获取当前已挂载镜像的信息。然后使用 hdiutil detach /Mount/Point
来卸载所有文件系统并分离镜像。
如果有多个镜像被挂载,您需要解析来自 hdiutil info
的输出以找到正确的镜像路径。使用 plist 输出格式 hdiutil info -plist
可能更加稳定,并将其传入 Python 脚本中,例如使用 plistlib 或使用 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
hdiutil
程序是否已更改?当我运行它时,我只能获得有关框架和驱动程序版本的信息。 - Neil Bartlettimages
数组。 - wbg打开终端,执行以下命令:
$ cd /Volumes
$ hdiutil info
cd
$ ls filename
在Finder中卸载卷,并最终在终端上执行:
$ rm filename
祝你好运。