この記事のポイント
・bashのエイリアスは alias 名前='コマンド' で定義する
・解除は unalias 名前、一時的に無効化するには \名前 で先頭にバックスラッシュを付ける
・.bashrc に記述すれば次回ログイン以降も継続して使える
・引数を取りたい場合はエイリアスではなく関数(function)を使う
そんなときに重宝するのが エイリアス(alias) 機能です。
この記事では、bashでエイリアスを定義する基本書式から、複数コマンドの組み合わせ、unalias による解除、.bashrc へ書いて永続化する手順、そして「エイリアスでは引数を扱えない」というよくあるつまずきまで、現場で使える形で解説します。
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜbashでエイリアスを定義するのか(背景・原理)
bashのエイリアス機能を使うと、コマンドに別名を付けたり、コマンドとオプションをひと纏めにして新しいコマンドのように使えるようになります。たとえば「ls をいつも ls -la のロング表示で使いたい」「rm を毎回 rm -i の確認付きにしておきたい」といったケースで、エイリアスは最大の威力を発揮します。
打鍵数の削減だけでなく、危険な rm を「常に確認付き」にしておくなど、安全性の底上げにも効果があります。
セミナーの受講生にも「最初の1週間で自分だけのエイリアス10個を .bashrc に書く」課題を出すことが多いのですが、これだけで作業効率は明らかに上がります。
aliasコマンドでエイリアスを定義する基本書式
エイリアスの定義は alias コマンドで行います。# 書式 $ alias 名前='コマンド オプション'
[pakira@Tiger work]$ ls # lsコマンドを実行します。 test.txt work.txt [pakira@Tiger work]$ alias ls='ls -l' # エイリアスで「ls -l」を設定します。 [pakira@Tiger work]$ ls # lsコマンドを実行します。 合計 0 -rw-rw-r--. 1 pakira pakira 0 3月 13 17:44 2014 test.txt -rw-rw-r--. 1 pakira pakira 0 3月 13 17:44 2014 work.txt # 「ls -l」の実行結果が表示されます。
エイリアスを設定する際、alias ls='ls -l' の「ls -l」を単一引用符でくくっているのは、コマンドとオプションの間にあるスペースがシェルに途中で解釈されないようにするためです。
複数コマンドや変数を組み合わせるエイリアス
複数のコマンドをパイプで繋いで、まとめて1つのエイリアスとして定義することもできます。次の例では、「ls -l」コマンドの実行結果を more コマンドで表示するエイリアス lsmore を設定しています。
[pakira@Tiger work]$ alias lsmore="ls -l | more"
現在定義されているエイリアス一覧は、引数なしで alias を実行すると確認できます。
[pakira@Tiger work]$ alias alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias lsmore='ls -l | more'
エイリアスを解除する(unalias / unalias -a)
設定したエイリアスを解除するには unalias コマンドを使用します。[pakira@Tiger work]$ unalias lsmore
すべてのエイリアスを一度に解除したい場合は -a オプションを付けます。
[pakira@Tiger work]$ unalias -a
エイリアスを一時的に無効にする(バックスラッシュ \ / command)
解除するのではなく、その場限りでエイリアスを使わずに本来のコマンドを実行したい場合は、コマンドの前にバックスラッシュ「\」を付けます。[pakira@Tiger work]$ \ls test.txt work.txt
バックスラッシュ以外にも、ビルトインの command を頭に付ける方法もあります。
[pakira@Tiger work]$ command ls test.txt work.txt
詳しくは Linuxでキーボードから¥記号を入力するとバックスラッシュになってしまう を参照してください。
.bashrc に書いてエイリアスを永続化する
ターミナル上で alias を定義しても、シェルを閉じればエイリアスは消えてしまいます。次回ログイン以降も使い続けるには、ユーザーのホームディレクトリにある .bashrc に追記します。# ~/.bashrc に追記 alias ll='ls -la' alias rm='rm -i' alias grep='grep --color=auto' alias ..='cd ..'
[pakira@Tiger ~]$ source ~/.bashrc
エイリアスでは引数を扱えない(関数とのちがい)
ここがbash初心者がもっともつまずくポイントです。エイリアスはあくまで「文字列の置き換え」であり、関数のように $1 $2 で引数を受け取ることはできません。
たとえば「指定したディレクトリに移動して ls を実行する」処理をエイリアスで書こうとしても、引数を取り回せないため意図通りには動きません。
このような処理は、関数(function)で書くのが正解です。
# NG: aliasでは$1が使えない $ alias cdls='cd $1 && ls' # OK: functionなら引数を扱える $ function cdls() { cd "$1" && ls; }
関数については「関数の定義」記事で詳しく解説しています。
alias / unalias / .bashrc 早見表
| やりたいこと | コマンド |
|---|---|
| 現在の一覧を表示 | alias |
| エイリアスを定義する | alias 名前='コマンド' |
| 特定のエイリアスを解除 | unalias 名前 |
| すべてのエイリアスを解除 | unalias -a |
| 一時的にエイリアスを無効化 | \名前 または command 名前 |
| 永続化(次回以降も有効化) | ~/.bashrc に追記して source ~/.bashrc |
| 引数を扱いたいとき | function 名前() { ...; } |
「alias not found」「コマンドが見つかりません」が出た時の対処法
よくある原因は次の3つです。・.bashrc に書いただけで source していない:新しいターミナルを開き直すか、source ~/.bashrc を実行する
・root に su で切り替えてエイリアスが使えなくなった:root ユーザーには root の .bashrc が適用される(自分のエイリアスは引き継がれない)
・スクリプトから呼び出した:シェルスクリプトはサブシェルで実行されるため、対話シェル用のエイリアスは基本的に効かない(スクリプト内で shopt -s expand_aliases するなどの工夫が必要)
不可解な挙動のときは、alias で一覧を出して「定義は本当に効いているか」をまず確認するのが鉄則です。
本記事のまとめ
bashのエイリアスは、alias 名前='コマンド' の書式で定義するだけで使えるシンプルかつ強力な機能です。unalias で解除、バックスラッシュで一時無効化、.bashrc で永続化、という3つを押さえれば、日常作業のキーボード操作は確実に減らせます。
「引数を間に挟みたい処理は関数で書く」というラインを意識すれば、シェルカスタマイズの幅が一気に広がります。
無料のLinux Master Magazineでは、実務で使えるbashカスタマイズのテクニックを定期的に配信しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます