plutilには、これまで紹介した個別のコマンドオプション以外に、出力形式やファイル名の扱いを調整する細かいオプションがある。

-sで成功時の出力を抑制する

-sを付けると、コマンドが成功した場合に何も出力しない。-lintの記事で紹介したとおり、正常なファイルの出力を減らしたい場合に使う。

$ plutil -lint -s sample.plist
$ echo $?
0

-scommand_optionの後ろに置く必要がある。前に置くとunrecognized optionエラーになる。

-rでJSON出力を整形する

-rを付けると、JSON形式の出力にインデントを追加し、キーをアルファベット順にソートして人間可読にする。

$ plutil -convert json -r -o - sample.plist
{
  "Count" : 3,
  "Name" : "Sample",
  "Tags" : [
    "a",
    "b"
  ]
}

-rを付けない場合は改行やインデントのない1行のJSONになる。

-nで改行を抑制する

-n-extractrawフォーマットと組み合わせたときに、出力の末尾の改行を付けない。

$ plutil -extract Name raw -n -o - sample.plist | xxd | tail -1
00000000: 5361 6d70 6c65                           Sample

シェル変数へ代入する際、余分な改行を含めたくない場合に使える。

–で以降をすべてファイル名として扱う

--を指定すると、それ以降の引数をオプションではなくファイル名として扱う。ハイフンで始まるファイル名を指定する場合に使う。

$ plutil -lint -bare.plist
unrecognized option: -bare.plist
$ plutil -lint -- -bare.plist
-bare.plist: OK

--を付けないと、-bare.plistがオプションの一部と誤認識されエラーになる。--を付けることで、ファイル名として正しく扱われる。

参考

【plutil】-lintでplistの構文エラーを検出する