シェルやコマンドは繰り返し使うことで手に馴染む、まさに道具のような存在なのだが、不慣れな人には「こういう場面でこれを使う」というシチュエーションを示したほうが理解しやすいはず。機能逆引きシリーズ最後となる今回は、OS X独自の機構/コマンドを利用した"知ってトクする使い方"を紹介してみよう。

フォルダの各国語表示を止める

ホームフォルダに最初からあるフォルダは、「デスクトップ」や「ダウンロード」などとカナ表記されている。これはOS Xの国際化機能によるもので、素の状態ではそれぞれ「Desktop」であり「Download」。Terminalでホームフォルダへ移動し「ls」コマンドを実行すれば、それら本来のフォルダ名がわかるはずだ。

Finderでも本来の英語表記にしてほしい、日本語表記は余計なお世話という場合は、cdコマンドで目的のフォルダへ移動(ex. cd ~/Documents)したうえで以下のコマンドを実行しよう。すぐにFinder上のフォルダ名が「書類」から「Documents」へと変化するはずだ。

この処理は、特定のフォルダに「.localized」というファイル -- 先頭が「.」から始まるためFinderでは不可視扱い -- の有無をチェックするFinderの習性(?)に着目している。元に戻す場合は、同じフォルダで「touch .localized」を実行すればOKだ。

$ rm .localized

※:元に戻す場合は「touch .localized」

「書類」フォルダが一瞬で「Documents」フォルダに変化する

ログアウトせずにDockを再起動する

FinderやDockなど一部のシステムアプリケーションは、手作業では終了できない。FinderはCommand-option-ESCを押して「アプリケーションの強制終了」ダイアログを表示し、「再度開く」ボタンをクリックすることで再起動できるが、Dockの場合そうはいかない。

Dockの様子がどこかおかしい、ダウンロードしたファイルがDockに表示されたままになったという場合には、慌ててシステムを再起動したりログアウトしたりせず、以下のとおりkillallコマンドを実行すればいい。

このkillallコマンドは、引数に与えた文字列をプロセス名(の一部)として、プロセス名が同じプロセスすべてに対しシグナル(省略すると再起動の信号)を送信する。Dockは「/System/Library/CoreServices/Dock.app/Contents/MacOS/Dock」というプロセス名で存在するので、先頭が大文字の「Dock」としなければならない点に注意しよう。

$ killall Dock

プロセス名は大文字/小文字が区別されるため、正確に「Dock」や「Finder」と入力すること

コマンド出力結果をテキストエディットで即編集

ファイルの詳細情報を表示する「ls -l」など、画面に出力されるテキスト量が多すぎるコマンドを実行した場合にどうしているだろう? UNIXに慣れたユーザであれば、lessやlvなどのページャにパイプするところだが、Terminalを操作して上方向へスクロールしているユーザは少なくないはず。もちろん、不慣れなのだからそれで構わない。

しかし、じっくり腰を据えて目を通したいのならば、「open」コマンドにパイプ(あるコマンドの実行結果を他のコマンドに引き渡す処理)してみよう。オプションには、標準入力(コマンドの実行結果が出力されるデバイス、初期値は端末画面)からデータを受け取るための「f」を指定すること。たとえば、以下のとおりコマンドを実行すると、「ls -l」の実行結果がテキストエディットで表示されるはずだ。

$ ls -l | open -f

コマンドの実行結果(テキスト)をTerminal画面ではなくテキストエディタに表示したい場合は、「open -f」にパイプしよう

作業を完了したときKyokoさんに労ってもらう

現在のOS Xには、iOSのものとよく似た動作の通知機構が用意されている。システムの起動直後からデーモン(notifyd)が動作し、通知が届いたかどうかを監視している。通知が届き次第ダイアログや通知センターにその内容を表示し、注意を促すというしくみ。これをTerminalでも応用することができるのだ。

以下に示すコマンドラインは、最初のものが通知イベントの登録で、通知を受けたときにsayコマンドで「ごくろうさま」と発音するというもの。notifydはこの内容を記憶し、キー(ここでは「done」)を受け取るまで待ち続けるため、あとは他の作業を進めてもTerminalを閉じても構わない。

先ほど実行したコマンドラインは、「done」というキーを受け取ると次の処理であるsayコマンドの実行に進む。これで、「notifyutil -p done」と実行すると、「ごくろうさま」というテキストがKyokoさんの声で読み上げられるというわけだ。「say」を他のコマンドに変えるなど、アレンジのうえ活用してほしい。

$ notifyutil -1 done && say "ごくろうさま" &
  ・
  ・
  ・
$ notifyutil -p done

notifyutilコマンドを使うと、通知を受けると音声で知らせるといった処理が可能になる