1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

シェルでコマンドにエイリアスを設定する方法 alias

2022-02-12 13:51:50

コマンドのエイリアスは、コマンドのニックネームとして使用できるものですが、そうすることにどんな意味があるのでしょうか?

例えば、私が最初にLinuxに来たとき、私が使用したエディタはViでしたが、今ではVimはViよりも大幅に強力なので、今では人気のエディタはVimになっています。しかし、私はvimコマンドではなく、viコマンドを入力するのに慣れている、小さな" m" 差を見ていない、コマンドを実行すると常に厄介に感じる、その後これはエイリアスが遊びに来るところです。vim コマンドのエイリアスを vi と定義するだけで、後で実行する vi コマンドが実際には vim コマンドであることがわかります。

コマンドの形式です。

[root@localhost ~]# alias
# query command alias
[root@1ocalhost ~] # alias alias='original command'
# set command alias



[root@localhost ~]# alias
# query the system for aliases already defined
alias cp='cp -i'
alias l='ls -d . * --color=auto'
alias ll='ls -1 --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]# alias vi='vim' # Define the alias of the vim command to be vi
[root@localhost ~]# alias
# re-query alias
alias cp='cp -i'
alias l.='ls -d . * --color=auto'
alias ll='ls -1 --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
# alias is now in effect
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'


注意点としては、コマンドのエイリアスは、コマンドそのものよりも優先順位が高いということです。そのため、vimコマンドにviというエイリアスを設定すると、元のviコマンドは使えなくなります。そのため、元のコマンドが不要であることが確認できない限り、システムコマンドでエイリアスの名前を変更することはできません。別の例として

[root@localhost ~]# alias sto='/usr/local/apache2/bin/apachectl stop'
[root@localhost ~]# alias sta='/usr/local/apache2/bin/ apachectl start'


apacheを設定し、使用する場合、apacheサービスを再起動し続ける必要があります。そこで、apache start コマンドのエイリアスとして "sta" を、apache stop コマンドのエイリアスとして "sto" を定義すると、apache サービスの再起動を効果的に高速化することができます。

もちろん、システム上に "sta" と "sto" コマンドが存在しないことをすでに確認していることが前提ですので、この2つのエイリアスがシステムコマンドをオーバーライドすることはありません。では、どうすればシステム上に "sta" と "sto" コマンドが存在しないことを確認できるのでしょうか。whereisとwhichコマンドを覚えていますか?あるいは、Tabコマンドの補完機能を使って、この2つのコマンドが存在するかどうかを判断することもできます。

エイリアスはコマンドより優先順位が高いと言いましたが、コマンドの実行順序は厳密に言うとどうなるのでしょうか?コマンドの実行順序は、以下のとおりです。
優先順位の1番目は、絶対パスまたは相対パスで実行されるコマンドを実行します。
2番目の優先順位は、エイリアスを実行します。
3番目の優先順位は、Bashの内部コマンドを実行します。
4番目の優先順位は、環境変数$PATHで定義されたディレクトリ検索で最初のコマンドを実行することです。

このようにエイリアスは単純なものですが、コマンドでエイリアスを定義しても、そのエイリアスは一時的なもので、ログアウトやシステムの再起動をするとすぐに消えてしまいます。エイリアスを恒久的なものにするには、環境変数の設定ファイル ~/.bashrc にエイリアスを書き込むとよいでしょう。コマンドは以下の通りです。

[root@localhost ~]# vi /root/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'
alias sto='/usr/local/apache2/bin/apachectl stop' alias sta='/usr/local/apache2/bin/apachectl start'
#Source global definitions
if [ -f /etc/bashrc ];then
. /etc/bashrc
fi


これでエイリアスは永久保存されます。さて、環境変数プロファイルとは何でしょうか?環境変数設定ファイルは、その名の通り、動作環境を定義するためのもので、エイリアスはもちろん動作環境のことですが、このファイルの役割については、以降の章で詳しく説明します。

設定したエイリアスを削除することはできますか?以下のようなunaliasコマンドを実行することで、簡単にエイリアスを削除することができます。

[root@localhost ~]# unalias vi

もちろん、エイリアスを削除したいことが確実な場合は、そのために環境変数設定ファイルの関連する項目も削除する必要があります。

シェルのエイリアスコマンドにエイリアスを設定する方法は、これで終わりです。シェルのエイリアスコマンドにエイリアスを設定する方法については、スクリプトハウスの過去の記事を検索するか、以下の記事を引き続き参照してください。