いよいよ来週から「WWDC 2013」がスタートします。基調講演も予定されていますから、Macの新機種にOS Xの次期バージョン、iPhoneにiPadにiOSに……と何が発表されても不思議ではありません。個人的には、これまで見たこともない新デバイスの登場に期待しています。

さて、今回は「知名度は低いが有用なコマンド」をいくつか取りあげる。Mountain Lionに収録されているコマンドは千数百、知らないコマンドがあるのは無理からぬ話で、これを機に機能や使い方を知ってはいかがだろう。

Macの眠気覚ましには「caffeinate」

名前にインパクトはあるが、知名度はいまひとつの「caffeinate」。Mountain Lionから登場したOS X/Darwinの独自コマンドで、わかりやすくいえばシステムのスリープ禁止期間を設けるためのもの。"カフェイン注入"的な役割であることは、コマンド名からも察しがつくのではないだろうか。

caffeinateコマンドには、ディスプレイがスリープすることを防ぐ(-d)、AC電源接続時にシステム全体がスリープすることを防ぐ(-s)、といったいくつかのオプションが用意されている。しかし、もっとも基本的かつ有用なコマンドは、オプションなしの"素の状態"で実行することだ。そうすれば、Control-Cを押して処理を中断するまで、システム全体がスリープしなくなる。

$ caffeinate

指定した時間だけスリープしないよう設定することもできる。その場合、ユーザが操作中であることを宣言する「-u」と、タイムアウトするまでの時間(秒)を指定する「-t」オプションを組み合わせることがポイントだ。たとえば、以下のとおりコマンドを実行すると、確実に30分間スリープしなくなる。いちいち省電力設定を変更する手間が省けるので、Macの"居眠り防止"の即効薬となるはずだ。

$ caffeinate -u -t 1800

こうして"カフェイン注入"しておけば、いつの間にかMacがスリープしていた、という事態を防げる

邪魔なファイルを一掃してくれる「dot_clean」

HFS+以外の形式でフォーマットされたディスクにファイルを書き込む機会は、OS Xユーザといえど少なくない。SDカードやUSBメモリなど市販のリムーバブルディスクは、その多くがFAT32やexFATで初期化されているからだ。OS Xでは、NTFSを除くWindows発のフォーマット形式を読み書きともにサポートしているため、普段は意識することがない。

しかし、OS Xで書き込んだディスクを知人に渡すと……名前の先頭が「._」で始まるファイルは何? と怒られることがある。これは、ファイル本体以外のメタデータ部分(リソースフォーク)が分離された「AppleDouble Headerファイル」で、OS X以外のシステムでは単なる"ゴミ"として扱われる。相手がWindowsなど他のマシンを利用していれば、こういう事態が往々にして発生する。

その"ゴミ"を削除するためのコマンドが「dot_clean」だ。使い方はかんたん、AppleDouble Headerファイルが保存されたフォルダのパスを引数に与えればOK。カレントディレクトリを対象にするのであれば、「.」だけでいい。「dot_clean」とだけ入力しておき、Finderから対象のフォルダをドラッグ&ドロップしてもいいだろう。サブフォルダがある場合は再帰的に処理してくれるので、手間がかからないことがうれしい。

$ dot_clean .

「dot_clean」コマンド実行すると、指定したディレクトリ上のAppleDouble Headerファイルを一括削除できる。左右のスクリーンショットを見比べてみよう

OS Xの理解が深まる「opensnoop」

OS Xには、Leopardのとき「DTrace」というプログラムの動作状況を監視するツールが追加された。システムコールのトレースなど、明らかに開発者向けのツールではあるが、「特定ファイルの監視」など一般ユーザにも役立つ場面がある。

そのファイル監視用コマンドが「opensnoop」だ。ただし実行には管理者権限が必要とされ、コマンドライン先頭には「sudo」を配する必要があるため、実際には「sudo opensnoop」とする必要がある。特定のファイルを監視したければ、「-f」オプションに続けて対象のファイルパスを指定すればOKだ。

opensnoopの実行後、アプリケーションの起動やファイルを開く操作を行ってみよう。きっと凄まじい勢いでファイル名がスクロールアウトしていくはずだ。Finderでファイルを操作したり、ファイルをQuickLookしたり、アプリケーションで文字入力したり……実用的かどうかはともかく、OS Xの理解が深まることは確かだろう。

Emacsで作業中のファイルを監視したところ、上書き保存するたびにSpotlightのインデックスを作成するプロセス「mdworker」が動作していることを確認できた