Apps

特定の過去のコマンドを見つけるためにコマンド履歴を印刷および照会する

特定の過去のコマンドを見つけるためにコマンド履歴を印刷および照会する

macOSのターミナル

ターミナル経由で実行した正確なコマンドを思い出そうとしているのに、なかなか思い出せない場合は、コマンド ライン履歴を照会して、過去に実行された古いコマンドを見つけることができます。

コマンドラインで以前に実行したコマンドを検索して取得するこのトリックは、Mac OS、Mac OS X、Linux、その他のUnixオペレーティングシステムでも機能します。標準の履歴コマンドを備えたシステムであれば、このトリックを使って以前のコマンドを取得できるため、システム管理者やコマンドラインユーザーにとって非常に便利なツールとなります。

Mac OSのコマンド履歴から特定のコマンドを見つける方法

特定のコマンドのコマンド履歴を追跡するには、ターミナル アプリを開いて次の構文を使用する必要があります。

history |grep "search string"

これにより、コマンド履歴で「検索文字列」が検索され、検索テキストを含むインスタンスのみが出力されます。

ターミナルに詳しくなく、これがなぜ便利なのか疑問に思っている場合は、例を見てみましょう。

例: 過去の「defaults」コマンドの検索
具体的な例を挙げましょう。最近使用した defaults write コマンドの正確な構文を思い出そうとしていました。defaults コマンドは、Mac OS X や特定のアプリケーションの動作を変更する長い文字列であることが多いため、その長さとわかりにくさから、これらのコマンドを頭の中で思い出すのは、控えめに言っても非常に困難です。

上矢印を押して過去の実行を永遠にスクロールする代わりに、次のようにしてコマンド履歴を「defaults write」のみに絞り込みました。

history | grep "defaults write"

これにより、広範な「history」コマンドの結果が grep に渡され、コマンド文字列に「defaults write」が含まれるインスタンスのみが検索されます。次のような結果リストが表示されます。

$ history |grep "defaults write"
44 defaults write com.apple.iTunes full-window -1
51 defaults write com.apple.iTunes invertStoreLinks -bool YES
421 defaults write com.apple.FaceTime AutoAcceptInvitesFrom -array-add [email protected]
426 defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool true
427 defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool false
428 defaults write com.apple.appstore ShowDebugMenu -bool true

これで、履歴リスト全体を検索するのではなく、結果を絞り込むことができます。

コマンド履歴検索の詳細設定

履歴検索は、必要に応じて詳細に設定することも、大まかに設定することもできます。例えば、探している defaults コマンドが com.apple.iTunes に関連している場合、次のコマンドを使って検索範囲をさらに絞り込むことができます。

history |grep "defaults write com.apple.iTunes"

次のような結果が返されます:

44 defaults write com.apple.iTunes full-window -1
51 defaults write com.apple.iTunes invertStoreLinks -bool YES

ぜひ試してみてください。ターミナルで入力したコマンドであれば、最近実行したコマンドはすべて履歴に保存されているので、どのコマンドでも同じように実行できます。defaultsコマンドはMac OS X特有のものですが、historyとgrepはUnixの世界で広く使われているツールなので、Linuxマシンを使う場合でも、そうでない場合でも、同じテクニックが使えます。

Mac OS X の基礎について学びたい場合は、コマンド ラインのヒントをご覧ください。