[Mac] Plistの値をコマンドで変更する (PlistBuddy)

先日に引き続きPlistネタです。
シェルスクリプトでパッケージの情報を変更したり、証明書を変更したい時にコマンドでPlistの値を変更できると色々便利です。しかしながら、階層になっているPlistの値を変更するが少し難しかったので紹介します。

使うコマンドはPlistBuddyです。

方法

以下のようなPlistがあったとして...

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>ArrayKey</key>
 <array>
  <dict>
   <key>foobar</key>
   <string>foobarValue</string>
   <key>hogehoge</key>
   <string>hogehogeValue</string>
  </dict>
 </array>
 <key>Rin</key>
 <string>Aki</string>
</dict>
</plist>

ArrayKey/hogehogeの値を変更したい時には以下のようにします。

/usr/libexec/PlistBuddy -c "Set ArrayKey:0:hogehoge ChangedValue" /tmp/Info.plist

ポイントは、階層になっているKeyは:で繋げます。
もちろんバイナリ形式のPlistもOK

0 件のコメント :

コメントを投稿