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ファイルの中身を人間可読な形式で表示する