Mac OS Xのターミナルで、シークレットコマンドを使ったことはありますか?

シークレットコマンドを使うと、『FaceTime』で自動受話ができるようになったりします。このようにかなりすばらしいコマンドがあるのですが、「シークレット」と言うだけあって、誰かがWebにさらしてくれない限り、知り得ないことが多いです。

そこで今回は、Rob Johnsonさんのテック系ブログ「CornDog Computers」に載っていた、アプリケーションの隠れ機能を見つける秘伝の方法をご紹介しましょう。

 「strings」というコマンドは、バイナリファイルからどんなテキスト(strings)でも引っ張ってこられるコマンドです。例えばターミナルを開き、以下のように入力します。

strings /Applications/MyCoolApplication.app/Contents/MacOS/MyCoolApplication


すると、ターミナルはコマンドの指示に関するテキストで溢れます。

このコマンドを使うのかなと思いきや、コマンドラインすら使わずにテキストエディタに入力するだけで、もっと簡単に、どんなファイルでもMac OSで実行できる「サービス」を作れます

  1. Automatorを開き、ワークフローのテンプレートで「サービス」を選びます。
  2. プルダウンメニューから「ファイルまたはフォルダ」を選択。
  3. 検索対象のプルダウンメニューから「Finder」を選択します。
  4. 左カラムから「シェルスクリプトを実行」のアクションを追加。
  5. 入力の引き渡し方法のプルダウンメニューから「引数として」を選択。
  6. 「strings "$1"」と入力します。
  7. 左カラムから「テキストエディット書類の内容を取得」のアクションを追加。
  8. 保存します(筆者は「Get Strings」として保存しました)。


101222_strings_02.jpg

アプリケーションを右クリックし、コンテキストメニューで「パッケージの内容を表示」を選び、「MacOS」という名前のフォルダを開きます。すると、そのアプリで実行できるバイナリを見られます。そこで、右クリックから「Get Strings」(違う名前を付けている場合は上記で名付けたサービス)を選ぶと、新しいテキストエディット書類が開き、すべてのテキスト(strings)がそこに書かれているはずです!

好きなテキスト(strings)があれば、それをターミナルに入力してアプリを好きにいじれます。ターミナルコマンドは、次のように構造が特殊です。

例えば以下のような場合、

defaults write com.apple.FaceTime AutoAcceptInvites -bool YES or NO

 ↓

defaults write」+「stringsの最初のテキスト(com.apple.FaceTime)」+「strings(AutoAcceptInvites)」+「オプション(-bool YES or NO)」


オプションが真偽値(YES/NO、TURE/FALSE)でない場合は、もう少し複雑になります。例えば、「AutoAcceptInvites」のオプションは「YES/NO」だけですが、Face Timeの自動受話機能をすべての着信ではなく、追加した特定のAppleIDユーザーのみ自動受話したい場合などです。こういったケースでは、もっと複雑なコマンドを使わなければならないでしょう。もし、そのコマンドを見つけたよ! という方は、ぜひコメントで教えてください!

以上の秘伝の方法を使えば、色々なアプリを自分好みにカスタマイズできそうです。時間のある時に、ぜひともトライしてみてください。

CornDog Computers

Rob Johnson(原文/訳:的野裕子)

 

Advertisement