plutil -insertは、plist(property list)ファイルに新しいキーと値を挿入する。挿入結果は元のファイルへ直接書き戻される。
値を挿入する
-insert <keypath> -<type> <value>の形式で指定する。
$ plutil -insert NewKey -string "hello" sample.plist
$ plutil -p sample.plist
{
"Count" => 3
"Name" => "Sample"
"NewKey" => "hello"
...
}
型は-string/-integer/-float/-bool/-date/-data/-xml/-jsonから選ぶ。
$ plutil -insert IsEnabled -bool true sample.plist
$ plutil -insert Ratio -float 1.5 sample.plist
$ plutil -p sample.plist
{
"IsEnabled" => true
"Ratio" => 1.5
...
}
-appendで配列の末尾に追加する
キーパスが配列を指すとき-appendを付けると、値を配列の末尾に追加する。
$ plutil -insert Tags -string "c" -append sample.plist
$ plutil -p sample.plist
{
"Tags" => [
0 => "a"
1 => "b"
2 => "c"
]
}
既に存在するキーへの挿入はエラーになる
-insertは新しい値の追加専用で、既に値が存在するキーパスを指定するとエラーになり、その値は変更されない。
$ plutil -insert Name -string "dup" sample.plist
sample.plist: Value already exists at key path Name
既存の値を書き換えたい場合は、後述の-replaceを使う。
辞書・配列を挿入する
-dictionary/-arrayを指定すると、値なしで空の辞書・配列を挿入できる。ネストしたキーパスへさらに-insertすることで、階層構造を組み立てられる。
$ plutil -insert Meta -dictionary sample.plist
$ plutil -insert Meta.Author -string "suer" sample.plist
$ plutil -p sample.plist
{
"Meta" => {
"Author" => "suer"
}
...
}
参考
【plutil】plistファイルの中身を人間可読な形式で表示する\第一線のプログラマーの行動原理を学べる!/
