エイリアス(alias)|bashで定義する方法・unaliasの解除・.bashrcで永続化する手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > エイリアス(alias)|bashで定義する方法・unaliasの解除・.bashrcで永続化する手順

この記事のポイント

・bashのエイリアスalias 名前='コマンド'定義する
・解除は unalias 名前、一時的に無効化するには \名前 で先頭にバックスラッシュを付ける
.bashrc に記述すれば次回ログイン以降も継続して使える
・引数を取りたい場合はエイリアスではなく関数(function)を使う

bashで「同じ長いコマンドを毎回打つのが面倒」「コマンドにいつも同じオプションを付けて使っている」と感じたことはありませんか。
そんなときに重宝するのが エイリアス(alias) 機能です。

この記事では、bashでエイリアス定義する基本書式から、複数コマンドの組み合わせ、unalias による解除、.bashrc へ書いて永続化する手順、そして「エイリアスでは引数を扱えない」というよくあるつまずきまで、現場で使える形で解説します。

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜbashでエイリアスを定義するのか(背景・原理)

bashのエイリアス機能を使うと、コマンドに別名を付けたり、コマンドとオプションをひと纏めにして新しいコマンドのように使えるようになります。

たとえば「ls をいつも ls -la のロング表示で使いたい」「rm を毎回 rm -i の確認付きにしておきたい」といったケースで、エイリアスは最大の威力を発揮します。
打鍵数の削減だけでなく、危険な rm を「常に確認付き」にしておくなど、安全性の底上げにも効果があります。

セミナーの受講生にも「最初の1週間で自分だけのエイリアス10個を .bashrc に書く」課題を出すことが多いのですが、これだけで作業効率は明らかに上がります。

aliasコマンドでエイリアスを定義する基本書式

エイリアスの定義alias コマンドで行います。

# 書式 $ alias 名前='コマンド オプション'

下記の実行例は、「ls」コマンドを実行した場合、「ls -l」コマンドが実行されるよう設定しています。

[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」の実行結果が表示されます。

上の例のように、エイリアスを設定するとシェルは「ls」を「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

引数に lsmore を指定して unalias コマンドを実行することで、そのエイリアスのみが解除されます。

すべてのエイリアスを一度に解除したい場合は -a オプションを付けます。

[pakira@Tiger work]$ unalias -a

なお、unaliasコマンドは、引数なしで実行した場合に環境によっては「すべて解除」になる場合もありますが、安全のため明示的に -a を付ける運用がおすすめです。

エイリアスを一時的に無効にする(バックスラッシュ \ / command)

解除するのではなく、その場限りでエイリアスを使わずに本来のコマンドを実行したい場合は、コマンドの前にバックスラッシュ「\」を付けます。

[pakira@Tiger work]$ \ls test.txt work.txt

上記の ls は「ls -l」のエイリアスが設定されていますが、「\ls」と書くことでエイリアスが一時的に無視され、素の ls コマンドの結果が表示されます。

バックスラッシュ以外にも、ビルトインの 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

ディストリビューションによっては、エイリアスを .bashrc ではなく .bash_aliases という別ファイルにまとめて、.bashrc から source する構成になっていることもあります(Ubuntu系など)。中身を確認してから書き加えてください。

エイリアスでは引数を扱えない(関数とのちがい)

ここが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カスタマイズのテクニックを定期的に配信しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。