Linux
在 Linux 上從 plist 文件中獲取值
我有 bash 腳本,它是為 OS X 編寫的,現在移植到 Linux。我無權訪問 Linux 機器。bash 腳本將使用OS X 上可用的
defaults read
and命令從 plist 文件中讀取值。PlistBuddy
由於 Linux 機器沒有這些命令,我正在尋找解決方法。是否有庫/腳本(最好是 Perl)可以幫助使用者從 plist 文件中獲取 Linux 機器上給定鍵的值?
我嘗試使用
sed
/awk
,但輸出不可靠。我遇到過plutil.pl
將 plist 文件轉換為其他格式的腳本。我已經在我的 Mac 上安裝了一個執行 Ubuntu 的虛擬機,這樣我就可以在部署到實際的 Linux 機器之前測試我的更改。
由於
.plist
文件已經是 XML(或可以輕鬆轉換),您只需要一些東西來解碼 XML。對於那個用途
xml2
:$ cat com.apple.systemsound.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.sound.beep.volume</key> <real>1</real> </dict> </plist> $ xml2 < com.apple.systemsound.plist /plist/@version=1.0 /plist/dict/key=com.apple.sound.beep.volume /plist/dict/real=1 $
你應該能夠弄清楚其餘的。
或者對於 Perl,
use XML::Simple;
(perldoc
更多資訊參見 )將 XML 資料結構放入散列中。
libplist 似乎滿足您的要求。您可以在腳本中引用一個 Ubuntu 軟體包名稱“libplist-utils”:
描述-en: Apple 屬性列表轉換器 這個包包含將 Apple 屬性列表文件從二進制轉換為 XML 的工具,反之亦然。它是 libimobiledevice 堆棧的一部分,提供對 iDevices(iPod、iPhone、iPad …)的訪問。
首頁:http ://www.libimobiledevice.org/
安裝命令:
apt-get install libplist-utils
使用範例:
plistutil -i Info.plist