Env
- OS X ElCapitan 10.11.6
使用するツール
defaultsとかplutilとかPlistBuddyなど、用意されているツールにもplistをいじれるものは複数あるが、それぞれの使用する用途は以下のような感じ(だと思っている)
- defaults: 各設定ファイル(Library/Preferences/*.plist)を作成・編集する
- plutil: plistの文法チェック・xml,jsonへのコンバート・閲覧(編集も一応出来るけど、arrayやdictの中の値の編集ができない?)
- PlistBuddy: plistの作成・編集・閲覧
ちなみにどっかの記事でPlistBuddyはElCapitanから使用できない、と記載されてあったが、特に問題なく使用出来るみたい
PlistBuddy
作成
特に気にする必要はなし
存在しないファイルを編集しようとすると、
以下のような文言が出てきて自動でplistが作成される
File Doesn't Exist, Will Create: hoge.plist
編集
基本的には以下のような文法でコマンドを叩く
# ワンライン
/usr/libexec/PlistBuddy -c "コマンドアクション" ファイル名
# 対話型
/usr/libexec/PlistBuddy ファイル名
Command: コマンドアクション
よく使うコマンド一覧
コマンド | 概要 |
---|---|
add 名前 タイプ [値] | 要素を追加する |
set 名前 値 | 要素の値を変更する |
print [名前] | 要素をダンプする |
delete 名前 | 要素を削除する |
copy コピー元 コピー先 | 要素を複製する |
save | ファイルを保存する※ |
exit | 編集を終了する※ |
help | ヘルプ |
※ 対話型でコマンドを叩く場合のみ |
よく使う値のタイプ一覧
タイプ | 概要 |
---|---|
string | 文字列 |
integer | 数値 |
bool | 真偽値 |
array | 配列 |
dict | 連想配列 |
Example
文字列要素を追加する
$ /usr/libexec/PlistBuddy hoge.plist
File Doesn't Exist, Will Create: hoge.plist
Command: add str string "fuga"
Command: print
Dict {
str = fuga
}
配列を操作する
複数階層ある要素については:
で要素名をつなぐ
Command: add arr array
Command: add arr:0 string "piyopiyo"
Command: print
Dict {
str = fuga
arr = Array {
piyopiyo
}
}
Command: add arr:1 string "piyopiyo2"
Command: print
Dict {
str = fuga
arr = Array {
piyopiyo
piyopiyo2
}
}
Command: add arr:0 integer 3
Command: print
Dict {
str = fuga
arr = Array {
3
piyopiyo
piyopiyo2
}
}
連想配列を操作する
Command: add dic dict
Command: add dic:str string "foo"
Command: print
Dict {
str = fuga
arr = Array {
3
piyopiyo
piyopiyo2
}
dic = Dict {
str = foo
}
}
Command: copy arr dic:dic2:arr
Command: print
Dict {
str = fuga
arr = Array {
3
piyopiyo
piyopiyo2
}
dic = Dict {
str = foo
dic2 = Dict {
arr = Array {
3
piyopiyo
piyopiyo2
}
}
}
}
Command: delete dic:dic2:arr:1
Command: print
Dict {
str = fuga
arr = Array {
3
piyopiyo
piyopiyo2
}
dic = Dict {
str = foo
dic2 = Dict {
arr = Array {
3
piyopiyo2
}
}
}
}
保存
対話的なコマンドで編集したファイルは最後にSaveするのを忘れないこと!!!
Command: save
以上の操作で以下のようなplistが作成される
hoge.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>arr</key>
<array>
<integer>3</integer>
<string>piyopiyo</string>
<string>piyopiyo2</string>
</array>
<key>dic</key>
<dict>
<key>dic2</key>
<dict>
<key>arr</key>
<array>
<integer>3</integer>
<string>piyopiyo2</string>
</array>
</dict>
<key>str</key>
<string>foo</string>
</dict>
<key>str</key>
<string>fuga</string>
</dict>
</plist>