2009-12-22 53 views
14

我正在尋找一種方法來獲取掛載磁盤映像的.dmg路徑,僅使用掛載點。從掛載點獲取.dmg的路徑

我想編寫一個「簡單」的Finder服務,它彈出磁盤映像並破壞伴隨的.dmg。彈出是微不足道的,但我不知道如何找出.dmg的路徑,只給出掛載點。

diskutil似乎並不知道或不說。

這是一個腳本,所以首選基於AppleScript或shell的建議。

+0

我不認爲你會得到一個基於AppleScript或shell的建議,因爲你可能不得不與驅動程序或至少它的用戶代理對話。 – 2009-12-22 23:43:47

+0

我認爲可能有像hdiutil或diskutil這樣可以幫助,或者也許在裝載磁盤映像上的Finder屬性。 – wbg 2009-12-22 23:53:36

回答

15

使用hdiutil info可獲取有關當前安裝的圖像的信息。然後 使用hdiutil detach /Mount/Point卸除所有文件系統,並分離圖像。

如果安裝了多個圖像,則需要解析hdiutil info的輸出以找到正確的圖像路徑。使用plist輸出格式hdiutil info -plist可能會更健壯,並將其運行到比如說帶有plistlib的python腳本或使用來自System EventsProperty 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 
+0

雖然這不會幫助我清除.dmg。 – wbg 2009-12-22 23:51:26

+0

對不起,錯過了這一點。查看更新的答案。 – 2009-12-23 00:04:15

+0

太棒了! hdiutil信息正是我正在尋找的! – wbg 2009-12-23 01:32:08

3

啓動終端,執行:

$ cd /Volumes 
$ hdutil info 

的懷疑DMG-文件的位置將顯示圖像路徑

cd下到位置,並做:

$ ls filename 

在Finder中卸載卷,最後在終端:

$ rm filename 

祝你好運。