バイナリ形式plistファイルと「PlistBuddy」

海上忍
2011-01-18 16:22:23
  • このエントリーをはてなブックマークに追加

 /usr/libexecディレクトリは、初期設定ではパスが通っていないこともあり、利用頻度は高くない。ftpdやtelnetdなどデーモンの類が保存されているらしいとか、その程度のユーザーが大半だろう。前回に続き取りあげる「PlistBuddy」は、その/usr/libexecディレクトリに置かれているコマンドだ。

 このPlistBuddyは、拡張子「.plist」のファイルを読み書きするときに利用する。その用法を解説するのが今回の趣旨だが、その前になぜplistファイルが利用されるかを説明しておこう。

 plistファイルは、"オブジェクトを永続化する"目的で利用される。メモリ上に生成したオブジェクトの内容をファイルに記録することで、プロセスが終了しても内容を保持することが可能になる。NEXTSTEPの時代から存在するが、独自書式だったものをOS Xの時代にはXML形式に変更している。

 そのplistファイルは、テキスト形式とバイナリ形式の2種類が存在する。初期のOS Xではテキスト形式のみサポートされていたが、XMLのパース処理は重いためか、やがてバイナリ形式が復活。Snow Leopardの現在は高速性を重視してか、バイナリ形式を利用するケースが多い。

 しかし、バイナリ形式のplistファイルはテキストエディタで編集できない。直接読み書きする場合には、Xcode Toolsに付属の「Property List Editor」、またはdefaultsコマンドを使うことが鉄則だ。

 PlistBuddyは、新しいplistファイル編集用のコマンドだ。Tigerのときにも、追加パッケージに含まれる形で提供されてはいたが、標準インストール構成に含まれたのはLeopard以降だ。

 前置きが長くなったが、このPlistBuddyには、引数とオプションを与えて実行する一般的なコマンドとしての使い方以外に、シェルのようにプロンプトを通じ対話形式で処理を進めるインタラクティブモードが用意されている。たとえば、前回取り上げた「mDNSResponder」のplistファイルを対象にする場合は、以下の要領で作業を開始する。コマンドラインで引用符付きの(長々とした)引数を使いたくないユーザーにとっては、こちらのほうが作業しやすいはずだ。

$ /usr/libexec/PlistBuddy /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
対話形式のplistファイルエディタとして使える「PlistBuddy」 対話形式のplistファイルエディタとして使える「PlistBuddy」


PlistBuddy(インタラクティブモード)の内部コマンド
Add <Entry> <Type> [<Value>]plistファイルに新規エントリとそのタイプ/値を追加する
Clear [<Type>]指定したタイプの既存のエントリを削除する
Copy <EntrySrc> <EntryDst>plistファイルの既存のエントリをコピーする
Delete <Entry>エントリをplistファイルから削除する
Exitインタラクティブモードを終了する(変更は破棄)
Helpヘルプを表示する
Import <Entry> <file>エントリの内容を別ファイルからインポートする
Merge <file.plist> [<Entry>]指定した別のplistファイルの内容を結合する
Print [<Entry>] 指定したエントリの内容を表示する
Revert直前にセーブした内容をplistファイルから読み直す
Save変更内容をplistファイルに反映(保存)する
Set <Entry> <Value>エントリに指定した値を設定する
  • 新着記事
  • 特集
  • ブログ