web-dev-qa-db-ja.com

Linuxのplistファイルから値を取得します

OS X用に作成され、現在Linuxに移植されているbashスクリプトがあります。 Linuxボックスにアクセスできません。 bashスクリプトは、OSXで使用可能なdefaults readおよびPlistBuddyコマンドを使用して、plistファイルから値を読み取ります。

Linuxマシンにはこれらのコマンドがないため、回避策を探しています。 Linuxマシン上の特定のキーのplistファイルからユーザーが値をフェッチするのに役立つライブラリ/スクリプト(Perlが望ましい)はありますか?

sed/awkを使用してみましたが、出力が信頼できません。 plistファイルを他の形式に変換するplutil.plのようなスクリプトに出くわしました。

MacにUbuntuを実行する仮想マシンをインストールしたので、実際のLinuxボックスにデプロイする前に変更をテストできます。

6
smokinguns

.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データ構造をハッシュに入れます。

2
bahamat

libplistは要件を満たしているようです。スクリプトで参照できるUbuntuパッケージ名「libplist-utils」があります。

説明-en:Appleプロパティリストコンバーターこのパッケージには、AppleプロパティリストファイルをバイナリからXMLに、またはその逆に変換するためのツールが含まれています。これはlibimobiledeviceの一部です。スタック、iDevice(iPod、iPhone、iPad ...)へのアクセスを提供します。

ホームページ: http://www.libimobiledevice.org/

インストールコマンド:

apt-get install libplist-utils

使用例:

plistutil -i Info.plist
7
BorisHajduk