我正在尋找一種方法來獲取掛載磁盤映像的.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