plutil -removeは、plist(property list)ファイルから指定したキーパスの値を削除する。
キーを削除する
-remove <keypath>の形式で指定する。
$ plutil -remove Count sample.plist
$ plutil -p sample.plist
{
"Name" => "Sample"
"Tags" => [
0 => "a"
1 => "b"
]
}
Countキーとその値が削除されている。
配列の要素をインデックスで削除する
キーパスの末尾に数値を指定すると、配列の該当インデックスの要素だけを削除できる。
$ plutil -remove Tags.0 sample.plist
$ plutil -p sample.plist
{
"Name" => "Sample"
"Tags" => [
0 => "b"
]
}
先頭(0番目)の要素"a"だけが削除され、残りの要素は詰めて並び直される。
存在しないキーの削除はエラーになる
-insertとは逆に、-removeは存在しないキーパスを指定するとエラーになる。
$ plutil -remove NoSuchKey sample.plist
sample.plist: No value to remove at key path NoSuchKey
$ echo $?
1
スクリプトで複数のキーを一括削除する場合、存在しないキーの指定で処理全体が止まらないよう、事前に-typeで存在確認するか、終了コードをハンドリングする。
参考
【plutil】-insertでplistに値を挿入する\第一線のプログラマーの行動原理を学べる!/
