Linux

在 Linux 上從 plist 文件中獲取值

  • September 28, 2018

我有 bash 腳本,它是為 OS X 編寫的,現在移植到 Linux。我無權訪問 Linux 機器。bash 腳本將使用OS X 上可用的defaults readand命令從 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

引用自:https://unix.stackexchange.com/questions/53275