いまさら聞けないシリーズの第3弾は、「エイリアス」について。Finderでいうところのエイリアスにあらず、シェルの「alias」だ。defaultsコマンドの実行例も含めて紹介するので、実用性は高いのではなかろうか。どうしてもコマンドを覚えられない、覚える気もない、というユーザにこそお読みいただきたい。
オリジナルのコマンドを作ろう
MacとUNIX(シェル)の両方に存在するが意味の異なる用語のひとつに「エイリアス」がある。Macの場合、ファイル/フォルダの別名であり、本体とは別の領域に作成するショートカットとしての役割を持つFinderの機能を指す。一方、シェルにおけるエイリアスはコマンドの別名であり、長くなりがちで覚えにくいコマンドラインを簡潔に表現したいときに使う。
そのエイリアスは、シェルの初期設定ファイル(bashの場合「~/.bash_profile」)で定義することにより真価を発揮する。シェル(ターミナル)の起動と同時に効果を発揮するため、意識せずに利用可能な状態となるからだ。つまり、よく使うコマンドラインをエイリアスとして定義しておけば、数文字程度のコマンドを実行するだけで用が足りることになる。
たとえば、1日前の日付を「0127(1月27日)」や「0202(2月2日)」という形式で表示する場合、「date -v-1d +%m%d」というコマンドラインを実行するが、オプションの「-v-1d」や引数の「+%m%d」を入力するのはいかにも面倒。というより、実行した直後に忘れてしまい、次回実行するとき調べ直すハメになること必定だ。しかしエイリアスを定義しておけば、次回シェルを起動するときから自分が覚えやすい文字列で実行できるようになる。
以下のコマンド実行例では、「date -v-1d +%m%d」を「yesterday」というエイリアスで定義している。bashの場合、「エイリアス="コマンドライン"」という書式を利用するので、その点さえ覚えておけば他のコマンドラインにも応用が効くはずだ。
$ alias yesterday="date -v-1d +%m%d"
シェルで定義済のエイリアスを一覧する場合、「alias」とだけ実行すればOK。個別にエイリアスの定義を確認する場合は、bashのビルトインコマンド(bashには多種多様な内部コマンドがあるのだ)のひとつ「type」を以下の要領で実行する。なお、エイリアスを無効化するコマンド「unalias」もあるが、シェルの初期設定ファイルで定義することが一般的なため、利用する機会はあまりない。不要になったエイリアスは、「~/.bash_profile」から消せばいいだけのことだ。
$ type yesterday
yesterday is aliased to `date -v-1d +%m%d'
面倒な「defaults」コマンドもエイリアスで
エイリアスに定義するのは、シェルで実行可能なコマンドラインであればなんでも構わない。「sudo」のように管理者権限を必要とするコマンドは、実行の際パスワードの入力を求めてくるが、それとてシェルでの作業と変わりはない。
OS Xの"ウラ設定"を呼び出すコマンドとして知られる「defaults」も、当然ながらエイリアスとして定義できる。defaultsコマンドの場合、設定を有効化するためにFinderやDockの再起動もあわせて行うことがあるが、それも2行のコマンドラインを「&&」(直前のコマンドが正常終了したとき続くコマンドを実行するための記号)でつなげば、まとめて1つのエイリアスになる。
たとえば、Finderに不可視属性のファイル/フォルダを表示するdefaltsコマンドは、実行後にFinderの再起動が必要だが、それぞれに別のエイリアスを定義するのはいかにも非効率。「&&」を使い1行にまとめてしまうのが正解だ。以下の実行例では、2行のコマンドラインで実行するところを1行にまとめ、「fileall」というエイリアスを定義している。
$ defaults write com.apple.finder AppleShowAllFiles -bool true
$ killall Finder
↓ ↓ ↓
$ alias fileall="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
ところで、「~/.bash_profile」でdefaultsコマンドを定義するときは、元に戻すためのエイリアスもあわせて用意したほうがいい。以下のリストでは、前述した「fileall」にくわえ、初期設定に戻すためのコマンドラインを「filehide」というエイリアスに定義している。そうすれば、不可視属性のファイル/フォルダをFinderに表示する・しないの設定変更が格段にラクになるはずだ。
alias fileall="defaults write com.apple.finder AppleShowAllFiles -bool true && killall Finder"
alias filehide="defaults delete com.apple.finder AppleShowAllFiles && killall Finder"