「よく使うオプション付きコマンドを、もっと短く呼び出せないだろうか」
Linuxでの作業効率を上げるなら、エイリアス(alias)を使わない手はありません。
この記事では、
alias コマンドによるエイリアスの設定方法を基本から解説します。一時的な登録・削除(
unalias)はもちろん、.bashrc での永続化、実務で使える定番エイリアス、sudo でエイリアスが効かない問題の対策まで網羅しました。でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
エイリアスとは?aliasコマンドの役割
エイリアス(alias)とは、コマンドに「別名」を付けて登録する仕組みです。たとえば、
ls -la を毎回打つ代わりに ll という短い名前で実行できるようになります。・オプション付きの長いコマンドを短縮できる
・危険な操作(
rm など)に確認オプションを強制できる・パイプやリダイレクトを含む定型処理をワンコマンド化できる
基本的な使い方
1. 現在のエイリアス一覧を表示する
引数なしでalias を実行すると、現在登録されているエイリアスの一覧が表示されます。# 登録済みエイリアスを一覧表示する $ alias # 出力例 alias cp='cp -i' alias mv='mv -i' alias rm='rm -i' alias ll='ls -la'
cp・mv・rm に -i(上書き確認)が最初からエイリアス設定されています。2. エイリアスを登録する
alias 別名='コマンド' の形式で登録します。# rm に -i オプションを付けて登録する $ alias rm='rm -i' # ls -la を ll で呼び出せるようにする $ alias ll='ls -la'
= の前後にスペースを入れないでください。スペースがあるとエラーになります。コマンド部分はシングルクォート(
')で囲みます。スペースやパイプを含むコマンドをシェルが誤って解釈しないようにするためです。3. パイプを含むコマンドをエイリアスにする
パイプやリダイレクトを含む一連の処理も、ひとつのエイリアスにまとめられます。# ls -l の結果を more でページ送りする $ alias lsmore='ls -l | more' # 現在のディレクトリのディスク使用量を見やすく表示する $ alias duh='du -sh *'
4. エイリアスを削除する(unalias)
登録したエイリアスを削除するにはunalias コマンドを使います。# rm のエイリアスを削除する $ unalias rm # 全てのエイリアスを一括削除する $ unalias -a
unalias -a は全エイリアスが消えるため、実行前に alias で現在の設定を確認しておきましょう。5. エイリアスを一時的に無視してコマンドを実行する
エイリアスを削除せずに、元のコマンドをそのまま実行したい場合があります。以下の3つの方法があります。・バックスラッシュを付ける:
\rm file.txt のようにコマンドの前に \ を付ける・commandコマンドを使う:
command rm file.txt でエイリアスを無視して実行する(スクリプト内ではこちらが明示的で推奨)・フルパスで指定する:
/bin/rm file.txt のように絶対パスで実行する# エイリアスの rm -i を無視して、素の rm を実行する $ \rm file.txt # command を使う方法(スクリプト内で推奨) $ command rm file.txt
エイリアスの永続化(.bashrcに設定する)
alias コマンドで登録したエイリアスは、ログアウトすると消えます。毎回自動的に設定するには、ホームディレクトリの .bashrc に記述します。1. .bashrcにエイリアスを追加する
# .bashrc を編集する $ vi ~/.bashrc # 以下を末尾に追記する alias ll='ls -la' alias la='ls -A' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias grep='grep --color=auto'
2. 設定を即座に反映する
.bashrc を編集しただけでは、現在のシェルには反映されません。source コマンド(または .)で再読み込みします。# .bashrc を再読み込みして反映する $ source ~/.bashrc # 同じ意味(ドットコマンド) $ . ~/.bashrc
.bashrc が自動で読み込まれるため、エイリアスが常に有効になります。実務で使える定番エイリアス集
現場でよく使われるエイリアスをまとめました。.bashrc にそのまま追記して使えます。1. 安全対策系(上書き・削除の確認)
# rm / cp / mv で上書き・削除前に確認する alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
2. ファイル一覧系
# 詳細表示(パーミッション・所有者・サイズ・日時) alias ll='ls -la' # 隠しファイルを含む一覧(. と .. を除く) alias la='ls -A' # ファイルサイズの大きい順にソート alias lt='ls -lhS'
3. 検索・ログ確認系
# grep の検索結果をカラー表示する alias grep='grep --color=auto' # 直近のコマンド履歴を検索する alias hg='history | grep' # ログのリアルタイム監視 alias tailf='tail -f'
4. ディレクトリ移動系
# 1つ上のディレクトリに戻る alias ..='cd ..' # 2つ上のディレクトリに戻る alias ...='cd ../..'
シングルクォートとダブルクォートの違い
エイリアスの定義では、シングルクォート(')とダブルクォート(")で動作が変わります。・シングルクォート:変数や特殊文字を展開しない。定義した文字列がそのまま保存される
・ダブルクォート:変数が定義時に展開される。実行時ではなく、エイリアスを登録した時点の値が使われる
# シングルクォート:実行するたびに現在のディレクトリを表示する $ alias cwd='echo $PWD' # ダブルクォート:定義した時点のディレクトリが固定される $ alias cwd="echo $PWD"
typeコマンドでエイリアスかどうかを確認する
あるコマンドがエイリアスなのか、シェルの組み込みコマンドなのか、外部コマンドなのかを確認するにはtype コマンドを使います。$ type ll ll is aliased to 'ls -la' $ type cd cd is a shell builtin $ type vim vim is /usr/bin/vim
type で確認しましょう。エイリアスの優先順位
bashでは、同じ名前のコマンドが複数存在する場合、以下の優先順位で実行されます。1. エイリアス(alias)
2. シェル関数(function)
3. シェル組み込みコマンド(builtin)
4. 外部コマンド(
/usr/bin/ 等にあるコマンド)つまり、
alias ls='ls -la' を設定すると、/bin/ls よりもエイリアスが優先されます。意図しない動作が起きた場合は、
type コマンド名 でどの段階のコマンドが実行されているかを確認してください。エイリアスと関数の使い分け
エイリアスは便利ですが、引数の位置を自由に指定できないという制限があります。引数を取りたい場合はシェル関数を使います。# エイリアスでは引数の位置を指定できない # alias grep-log='grep "$1" /var/log/messages' ← これは動かない # シェル関数なら引数を自由に使える grep-log() { grep "$1" /var/log/messages } # 使い方 $ grep-log "error"
・引数が不要、またはコマンドの末尾に付くだけ → エイリアスでOK
・引数をコマンドの途中に挿入したい → シェル関数を使う
sudoでエイリアスが効かない問題と対策
sudo の後にエイリアスを使うと、エイリアスが無視されて素のコマンドが実行されます。# rm は rm -i にエイリアス済みだが... $ sudo rm important-file.txt # → 確認なしで削除されてしまう(エイリアスが効いていない)
sudo がエイリアスを展開しない仕様のためです。対策として、sudo 自体にエイリアスを設定します。# sudo の後のエイリアスも展開されるようにする alias sudo='sudo '
sudo の後のスペースです。bashの仕様で、エイリアスの末尾がスペースの場合、次の単語もエイリアス展開の対象になります。この設定を
.bashrc に追記しておけば、sudo rm でも rm -i のエイリアスが有効になります。トラブルシュート
「alias: command not found」が出る場合
alias はbashの組み込みコマンドです。sh や dash など別のシェルで実行している場合はエラーになることがあります。echo $SHELL で現在のシェルを確認してください。.bashrcに書いたのにログイン時に反映されない場合
ログインシェルは.bashrc ではなく .bash_profile(または .profile)を読み込みます。.bash_profile の中で .bashrc を読み込む設定がない場合、ログイン時にエイリアスが反映されません。# .bash_profile に以下を追記する if [ -f ~/.bashrc ]; then . ~/.bashrc fi
エイリアスがスクリプト内で動かない場合
bashスクリプト(.sh ファイル)では、デフォルトでエイリアスが無効になっています。スクリプト内ではエイリアスではなくシェル関数を使うのが正解です。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 登録済みエイリアスを一覧表示する | alias |
| エイリアスを登録する | alias ll='ls -la' |
| エイリアスを削除する | unalias ll |
| 全エイリアスを一括削除する | unalias -a |
| エイリアスを無視して実行する | \rm file.txt |
| エイリアスを無視して実行する(明示的) | command rm file.txt |
| コマンドの種類を確認する | type ll |
| エイリアスを永続化する | vi ~/.bashrc に alias を追記 |
| .bashrcを即座に反映する | source ~/.bashrc |
| sudoでもエイリアスを有効にする | alias sudo='sudo ' |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
