OS X用に書かれ、Linuxに移植されたbashスクリプトがあります。私はLinuxボックスにアクセスできません。 bashスクリプトはOS Xで利用可能で、コマンドを使用してdefaults read
plistファイルから値を読み込みます。PlistBuddy
Linuxシステムにはこれらのコマンドがないので、回避策を探しています。ユーザーがLinuxシステムの特定のキーのplistファイルから値を取得するのに役立つライブラリ/スクリプト(Perlを推奨)はありますか?
sed
/を使ってみましたawk
が、出力は信頼できません。plutil.pl
plistファイルを別の形式に変換する同様のスクリプトが見つかりました。
実際のLinuxシステムに展開する前に変更をテストできるように、MacでUbuntuを実行する仮想マシンを設定しました。
答え1
libplistが好きなように動作するようです。スクリプトでUbuntuパッケージ名「libplist-utils」を参照できます。
Description-ja:Appleプロパティリストコンバータこのパッケージには、AppleプロパティリストファイルをバイナリからXMLにまたはその逆に変換するツールが含まれています。これはlibimobiledeviceスタックの一部であり、iDevice(iPod、iPhone、iPad ...)へのアクセスを提供します。
ホームページ:http://www.libimobiledevice.org/
インストールコマンド:
apt-get install libplist-utils
使用例:
plistutil -i Info.plist
答え2
.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データ構造をハッシュに入れます。
答え3
Python3には標準ライブラリがあります。
plistlib
ファイルを読み書きでき.plist
、https://docs.python.org/3.9/library/plistlib.html
MyKey
たとえば、次の値を取得します./Info.plist
。
$ python3 -c "import plistlib; print(plistlib.load(open('./Info.plist', 'rb'))['MyKey'])"
MyValue
これはPython3を実行しているすべてのオペレーティングシステムで機能します。