今回はコマンドの1つである alias
について紹介していきたいと思います。
Contents
alias
コマンドとは
‘alias’ という単語自体には「別名」「通称」「仮名」などの意味合いがあり、この意味合いの通り、alias
はコマンドに「別名(通称・仮名)」を付けるコマンドになります。
コマンドに 別名
を付ける
alias
でコマンドに別名をつける場合、下記のように 別名=コマンド
の形式で引数を指定して alias
を実行します。
% alias 別名=コマンド
これ以降、=
の左側で指定した 別名
が登録され、別名
を実行すれば右辺で指定した コマンド
が実行されることになります。
% 別名
また、右辺を '
(シングルクオーテーション)で囲ってやれば「スペースを含めたコマンド」に別名を付けることが可能となります。
コマンド実行時にはオプションや引数をスペースで区切って指定することになりますので、こういったオプションや引数指定も含めて 別名
として登録することができます。そして、別名
を実行するだけで、オプション指定や引数も含めたコマンド実行を行うことができることになります。
% alias 別名='コマンド オプション 引数'
ですので、簡単な 別名
をつけておけば、引数やオプション等を複数指定するような長いコマンド・複雑なコマンドを手軽に簡単に実行することができるになり、これにより作業の効率を上げることができます。
スポンサーリンク
登録された 別名
を確認する
また、alias
コマンドに引数を指定せずに実行した場合、現在登録されている 別名
の一覧が表示されることになります。
% alias 別名1=コマンド1 別名2=コマンド2
また、alias
コマンドに 別名
のみを引数で指定した場合、その 別名
の登録状況を確認することができます。
% alias 別名1 別名1=コマンド1
別名
の登録を削除する
登録された 別名
は、ターミナルを再起動したりすると削除されることになります。
また、ターミナルをわざわざ再起動しなくても、unalias
コマンドを実行することによって、現在登録されている 別名
を削除することができます。
% unalias 別名
alias
コマンドの使用例
続いて alias
コマンドの使用例をいくつか紹介していきたいと思います。
スポンサーリンク
長いコマンドに 別名
として登録する
alias
コマンドを利用するメリットは、たくさんの文字を打ち込んで実行する必要があるようなコマンドを簡単なコマンドに置き換えることができる点にあります。
例えばですが、/Users/user/Documents/programming/my_command.exe
というファイルが存在する場合、このファイルを実行するためには下記のように絶対パスを指定したり、
% /Users/user/Documents/programming/my_command.exe
下記のようにフォルダを移動したりしてからコマンドを実行する必要があります。
% cd /Users/user/Documents/programming ./my_command.exe
一度実行するくらいであれば上記のような手順を踏むのはそこまで苦にならないですが、これを何度も繰り返し行うことになると面倒ですし、効率が悪いです。
そんな時に alias
を利用し、次のように my_command
という別名をつけてやれば、上記のような手順を踏む必要がなくなり、単に my_command
を指定するだけで /Users/user/Documents/programming/my_command.exe
が実行されるようになります。
% alias my_command=/Users/user/Documents/programming/my_command.exe % my_command #/Users/user/Documents/programming/my_test.exeが実行される
引数も含めて 別名
として登録する
また、オプションや引数を指定する必要のあるコマンドも多いので、よく使用するオプションや引数を含めてコマンドに 別名
を付けることで、簡単にコマンドを実行することができるようにもなります。
例えば、ls -al
というコマンドをよく利用するのであれば、これを ll
などと別名をつけておけば、以降は ll
によって ls -al
を実行することが可能となります(Linux だとデフォルトで ll='ls -al'
が登録されている場合もあるようです)。
% alias ll='ls -al' % ll
また、自身で作成したスクリプトを実行する機会が多いのであれば、それを 別名
として登録しておいて作業効率アップを行うようなこともできます。
例えば、/Users/user/Documents/programming/my_test.py
という Python スクリプトを実行する場合、my_test.py
が存在するフォルダに移動してから python my_test.py
を実行する or 下記のようなコマンドを実行する必要があります(パスは相対パス指定でも良いです)。移動するにしてもスクリプトのパスを指定するにしても面倒です…。
% python /Users/user/Documents/programming/my_test.py
ですが、alias
を利用すれば、上記コマンドも簡単に実行することができるようになります。
例えば下記のように alias
を実行すれば、以降では上記コマンドを単に my_tes
t で実行できるようになります。
% alias my_test='python /Users/user/Documents/programming/my_test.py' % my_test
よく使うコマンドを 別名
として登録する
ちょっと Python を利用していない方には分かりにくい例かもしれませんが、私は実際に下記のように alias
を利用していることが多かったです。
% alias python=python3
元々 PC 上に Python2 と Python3 の両方がインストールされており、python
コマンドを実行した場合に Python2 が動作してしまう状況だったため、上記のように alias
コマンドを実行して python
を実行した際に Python3 が動作するようにしていました。
毎回 Python3 を実行させるために python3
を実行しても良いのですが、ネット上に公開されているコマンドをコピペして実行する際に毎回 python
部分を python3
に置き換えて実行する必要があって面倒だったため、上記を実行して python
によって Python3 が実行されるようにしてから、コマンドをコピペして実行するようにしていました。
いくつか alias
の使用例を紹介しましたが、とにかく「コマンドの実行がめんどくさい」と感じた際には、何らかの方法で手軽に実行できるように対策するのが良いと思います。そして、その対策手段の1つが alias
の利用となります。
スポンサーリンク
alias
コマンドの注意点
最後に、alias
コマンドの注意点について解説しておきます。
alias
コマンドの効果は永続的ではない
まず、alias
コマンドの効果は一時的なもので、ターミナルを終了すると alias
コマンドで登録した 別名
は削除されることになります。
ですので、alias
コマンド実行後、ターミナルを再起動したりすると、別名
でのコマンド実行を行うためには alias
コマンドを再度実行する必要があります。
ターミナル再起動後も alias
コマンドの効果を持続させるようにしたい場合は、 ~/.zshrc
というファイルに alias
コマンドを追記する必要があります。~/.zshrc
が存在しない場合は ~/.zshrc
を新規作成し、その ~/.zshrc
に alias
コマンドを追記します。
alias ll='ls -al'
ちなみに、~/.zshrc
とは「ホームディレクトリ以下の .zshrc
というファイル」になります。ファイル名の最初に .
が付いているため隠しファイルとなっているので注意してください。
~/.zshrc
はターミナル起動時に読み込まれ、読み込まれた際にファイル内に記述されたコマンドが実行されることになります。なので、alias
コマンドを記述しておけばターミナル起動時に毎回 alias
コマンドが実行されることになり、ターミナルを終了しても、次回のターミナル起動時には自動的に alias
コマンドが実行され、別名
でのコマンド実行が行えるようになります。
不要な空白を付けないこと
また、alias
コマンドで引数を指定する場合、引数に不要な空白を付けないように注意してください。
例えば下記のように =
の左右に空白を付けた場合、うまく alias
が動作しません。
% alias ll = 'ls -al' zsh: bad assignment % ll zsh: command not found: ll
上記の1行目においては、=
の左右に空白があるため alias
に対して複数の引数が指定されているように Mac に認識されます。つまり、上記では ll
と =
と 'ls -al'
が引数として指定された状態で alias
が実行されることになります。
登録された 別名 を確認する でも説明したように、alias
の引数に「別名=コマンド
の形式でない文字列」を指定した場合、各引数に指定された文字列の 別名
としての登録状況を調べることができます。ですが、=
に関しては不適切な引数であると判断され、上記のように bad assignment
というエラーが発生することになります。
意図した通りに alias
が動作してくれないため、引数に 別名=コマンド
を指定する場合、不要な空白を含ませないようにしてください。ただし、コマンド
部分のみに関しては、'ls -al'
の例のように '
(シングルクォーテーション)で囲ってやれば、オプションや引数を指定するために空白を含ませて指定することが可能です。
スポンサーリンク
シェルスクリプト実行時の注意
また、alias
に関してはシェスクリプト実行時にも注意が必要になります。
別名
はシェルスクリプト実行時に引き継がれない
まず、alias
で登録した 別名
はシェルスクリプト実行時に引き継がれないようです。
例えば下記のようなシェルスクリプト(test.sh)を作成し、
my_command
下記のようにシェルスクリプトを実行した場合、alias
で ll='ls -al'
を登録しているのにも関わらず command not found
エラーとなります。
% alias my_command='ls -al' % sh test.sh test.sh: line 1: my_command: command not found
このように、シェルスクリプトを実行前に alias
を実行しても、その結果はシェルスクリプト側に反映されないので注意してください。
alias
を実行しても意味がない場合がある
上記の問題に関してはシェルスクリプト内で alias
を実行するようにすることで解決できる場合があります。
例えば先程の例であれば、下記のように test.sh
を変更し、
alias my_command='ls -al'
my_command
いつも通りシェルスクリプトとして実行してやれば正常にスクリプトが動作することになります。
% sh test.sh total 88 drwxr-xr-x 9 daeu staff 288 10 18 05:47 . drwxr-xr-x+ 96 daeu staff 3072 10 18 05:47 .. 〜略〜
ただし、使用するシェルの種類によってはシェルスクリプト内で alias
を実行しても意味がない場合もあるので注意が必要です。
sh
を使用した場合、上記のようにシェルスクリプト内で alias
を実行して別名登録を行うことができるようになっています。ですので、上記の test.sh
は正常に実行できると思います。
それに対し、bash
を使用した場合、単にシェルスクリプト内で alias
を実行しても別名登録が行われません。そのため、上記のようにシェルスクリプト内で alias
を実行したとしても、シェルスクリプトを実行するとエラーが発生することになります。
% bash test.sh test.sh: line 2: my_command: command not found
bash
を使用している場合にシェルスクリプト内で alias
を利用する際には事前に shopt -s expand_aliases
を実行しておく必要があるようです。
例えば先程の test.sh
を下記のように変更すれば、bash
でも正常にシェルスクリプトが動作するようになります。
shopt -s expand_aliases
alias my_command='ls -al'
my_command
この辺りの詳細に関しては、下記ページが参考になると思います。
https://genzouw.com/entry/2020/03/16/090918/1947/
まとめ
このページでは、コマンドの1つである alias
について解説しました!
一応 Mac 向けの解説になっていますが、alias
は Linux 環境でも利用できるコマンドです。
alias
を実行することでコマンドに別名を付けることができ、これによって面倒なコマンド実行を手軽に行うことができるようになります。
重要なことは「面倒なことをいかにして楽に行えるようにするか」という点になると思います。alias
はコマンドが長くて面倒な場合やコマンドが複雑で実行が面倒な場合の解決策の1つになります。ですが、作業が面倒な要因には様々なものがありますので、それらを解決するためにはどうすれば良いかを考え、それに対して対策を取るようにしていけば、いろんな作業の効率化を図れるようになると思います。
ぜひ、作業が面倒だと感じた場合には面倒なまま放置せず、その対策について考えるようにしていきましょう!