alias コマンド入門 - エイリアスでコマンドを短縮する方法

alias コマンド入門 - エイリアスでコマンドを短縮する方法

この記事でできるようになること

  • `alias` で長いコマンドに短い別名をつけられる
  • `~/.bashrc` に書いて `source` すれば、次に開いた画面でも使える
  • `unalias` で消せる。動かないときは `type` で原因を調べられる

前提知識(先に読むと理解しやすい記事)

エイリアスってなに?

リナ: ライニー先輩、毎回 ls -la --color=auto って打つのが面倒で…もっと楽な方法ないですか?
ライニー先輩: あるよ。「エイリアス」を使えば、長いコマンドに短い名前をつけられるんだ。alias ll='ls -la --color=auto' と書けば、次からは ll だけで済む。
リナ: えっ、それだけですか。すごく簡単そう。
ライニー先輩: そう、とても簡単だよ。ただし「ターミナル入力したコマンドを解釈してコンピュータに実行させる対話プログラム。を閉じると消える」という落とし穴がある。その直し方まで知っておくと完璧だね。

エイリアス(alias) は、長いコマンドに短い別名をつける仕組みです。「別名」「あだ名」「ショートカット」と呼ばれることもあります。この記事では「エイリアス」で統一します。

エイリアスを使うと、毎回打ち込む手間が減ります。打ち間違いも減らせます。

言葉の整理

  • ターミナル:コマンドを打ち込んで、結果を文字で受け取る画面のことです。
  • シェル:あなたが打ったコマンドを読み取って実行するプログラムのことです。この記事では bash を前提にします。
  • ターミナル・シェル・コンソールは、ほぼ同じものを指す別の呼び方として使われます。

エイリアスはシェルが覚えている「言いかえの表」だと考えてください。

一言でいうと

alias 短い名前='長いコマンド'

これだけです。今すぐ使えます。

安心してほしいこと

この記事で使う aliasunalias は、ファイルを消しません。書きかえもしません。打ち間違えても、あなたのパソコンは壊れません。

あとで出てくる ~/.bashrc の編集だけは、設定ファイルに手を入れます。そこは 4-1 節 で「壊れたときの戻し方」を先に説明します。

この記事でわかること

  • alias 短い名前='長いコマンド' で、長いコマンドに別名をつけられます
  • 設定済みのエイリアスは alias で一覧できます。alias 名前 なら 1 つだけ確認できます
  • type で定義を確認できます。名前の前に \ を付けると、その 1 回だけエイリアスを無視できます
  • ~/.bashrc に書いて source すれば、次に開いたターミナルでも使えます
  • unalias で削除できます。.bashrc の行を消すまでは、開き直すと復活します

1. 基本の使い方

結論: alias 名前='コマンド' で設定すれば、すぐ使える。ただし設定は今の画面かぎりで、閉じると消える。

1-1. エイリアスを設定する

$ alias ll='ls -la'

設定したら、すぐに使えます。

$ ll
total 48
drwxr-xr-x 5 user user 4096 May 31 19:00 .
drwxr-xr-x 3 root root 4096 May 20 10:00 ..
-rw-r--r-- 1 user user  220 May 20 10:00 .bash_logout
-rw-r--r-- 1 user user 3526 May 20 10:00 .bashrc

alias コマンドで設定したエイリアスは、今のターミナルだけ で有効です。ターミナルを閉じると消えます。

閉じても残す方法は 4 章 で説明します。

1-2. 設定済みのエイリアスを一覧表示する

$ alias

alias のうしろに何も付けずに実行します。すると、今使えるエイリアスが全部表示されます。

alias ll='ls -la'
alias grep='grep --color=auto'
alias ls='ls --color=auto'

Ubuntu では、grepls に最初からオプションが設定されていることが多いです。これも alias コマンドで確認できます。

表示される中身は、お使いの環境によって変わります。上の例と違っても問題ありません。

1-3. 特定のエイリアスを確認する

$ alias ll
alias ll='ls -la'

2. よく使うエイリアス例

結論: ls 系・ディレクトリ移動・消し間違い防止(-i)・git 系が定番。短くしすぎると意味がわからなくなるので注意する。

2-1. ls 系

alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
リナ: lall って何が違うんですか?
ライニー先輩: ls -la は隠しファイルも含めて詳しく表示するよ。ls -A も隠しファイルを表示するけれど、... の 2 行は出さないんだ。
ライニー先輩: 隠しファイルというのは、名前が . で始まるファイルのことだよ。.bashrc がその代表だね。用途で使い分けてみて。

2-2. ディレクトリ移動

alias ..='cd ..'
alias ...='cd ../..'
alias ~='cd ~'

.. と打つだけで、1 つ上のディレクトリファイルをまとめて整理する入れ物。Windows や macOS の「フォルダ」と同じもの。に移動できます。ディレクトリは、Windows や Mac でいうフォルダと同じ意味です。

2-3. 削除・上書きの事故防止

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

-i は、コマンドのうしろに付けて動きを変えるスイッチです。こうしたスイッチを「オプション」と呼びます。

-i を付けると、実行の前に「本当にいいですか」と確認してくれます。

rm を安全に使うために

rm で消したファイルは、GUI と違ってゴミ箱に行きません。その場ですぐ完全に消えます。だからこそ alias rm='rm -i' のような確認つきの設定が役に立ちます。

本サイトの仮想ターミナルは学習用です。何を打っても、あなたのパソコンのファイルは消えません。安心して試してください。

シェルスクリプト内での注意点

シェルスクリプトの中でこのエイリアスが効くと、思わぬ動きになることがあります。確認待ちのまま止まってしまう場合があるからです。

スクリプトでは \rm/bin/rm と書きます。こう書くと、エイリアスを無視してコマンド本体を呼び出せます。

2-4. git 系

alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline'
リナ: gs と打つだけで git status が動くんですか。毎日使うので助かります。
ライニー先輩: そう。ただし短くしすぎると、あとで「これ何だっけ」となるよ。困ったら alias で一覧を確認すればいい。

3. エイリアスを確認する・1 回だけ無視する

結論: type で「その名前が何なのか」がわかる。名前の前に \ を付けると、その 1 回だけエイリアスを無視できる。

3-1. エイリアスが定義されているか確認する

$ type ll
ll is aliased to `ls -la'

type は、その名前が何なのかを教えてくれるコマンドです。エイリアスなのか、コマンドなのか、シェルの組み込み機能なのかを見分けられます。

定義されていない場合は、次のように表示されます。

$ type ll
bash: type: ll: not found

3-2. その 1 回だけエイリアスを無視する

alias rm='rm -i' を設定していると、毎回確認を求められます。今回だけ確認なしで動かしたいときは、名前の前に \ を付けます。

$ \rm file.txt

\ を付けると、シェルはエイリアスではなくコマンド本体を使います。設定そのものは消えません。次からはまた確認つきに戻ります。

3-3. リナの失敗:rm が確認してくれない

リナ: .bashrcalias rm='rm -i' と書きました。それなのに、スクリプトの中の rm は確認なしで消しました。設定が壊れたんでしょうか。
ライニー先輩: 壊れてないよ。エイリアスは、スクリプトの中では展開されないんだ。
ライニー先輩: だからスクリプトの rm は、エイリアスではなく本物の rm として動く。確認は出ないよ。
リナ: えっ、書いた設定が届かない場所があるんですか。それは驚きました。
ライニー先輩: そう。エイリアスは対話画面のための仕組みだからね。スクリプトで確認を出したいなら、rm -i と自分で書く。それが確実だよ。
リナ: なるほど。エイリアスは「自分が手で打つとき用のショートカット」なんですね。納得しました。

4. エイリアスを永続化する

結論: ~/.bashrc に書けば、ターミナルを閉じても残る。今すぐ反映したいときは source ~/.bashrc を実行する。

ターミナルを閉じても残るようにするには、~/.bashrc に書き足します。

~/.bashrc は、新しいターミナルを開くたびにシェルが自動で読み込む設定ファイルです。~ は自分のホームディレクトリを表す記号です。

4-1. 編集する前にバックアップを取る

壊れたときの戻し方を先に用意する

~/.bashrc は設定ファイルです。書き方を間違えると、ターミナルを開くたびにエラーが出ることがあります。

そこで、編集の前にコピーを取っておきます。

$ cp ~/.bashrc ~/.bashrc.bak

おかしくなったら、コピーから戻せます。

$ cp ~/.bashrc.bak ~/.bashrc
$ source ~/.bashrc

エラーが出るだけでターミナルが使える場合は、上の 2 行で元に戻ります。

ターミナルが開いてすぐ閉じてしまう場合は、設定ファイルを読まずに起動できます。別のターミナルから次のように打ってください。

$ bash --norc --noprofile

この状態なら、上の cp で元に戻せます。

4-2. .bashrc を編集する

$ nano ~/.bashrc

nano は初心者向けのテキストエディタです。ファイルの末尾に、次のように書き足します。

# My aliases
alias ll='ls -la'
alias ..='cd ..'
alias gs='git status'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

4-3. 変更を今すぐ反映する

.bashrc を編集しただけでは、今開いているターミナルには届きません。次のコマンドで読み直します。

$ source ~/.bashrc

短縮形でも同じ意味です。

$ . ~/.bashrc

source コマンドとは

.bashrc を「今のシェルでもう一度読む」コマンドです。

新しいターミナルを開けば .bashrc は自動で読み込まれます。source を使えば、開き直さずに今すぐ反映できます。

リナ: では .bashrc に書いて source したあとは、ターミナルを閉じて開いても大丈夫ですか。
ライニー先輩: 大丈夫だよ。次にターミナルを開いたときも .bashrc は自動で読み込まれる。だからエイリアスはずっと使えるよ。

5. エイリアスを削除する

結論: unalias 名前 で 1 つだけ、unalias -a で全部を削除する。ただし .bashrc の行を消さないと、開き直したときに復活する。

5-1. 特定のエイリアスを削除する

$ unalias ll

5-2. 全エイリアスを削除する

$ unalias -a

unalias が消すのは、今のターミナルの分だけです。ターミナルを閉じて開くと .bashrc が読み直されます。そのため、エイリアスは復活します。

完全に消したいときは、.bashrc から該当する行も削除してください。

6. うまく動かないときの確認

結論: まず type ll で定義を確認する。保存忘れ・source 忘れ・= の前後のスペースが 3 大原因。

リナ: .bashrc に書いたのに ll が使えません。どうしてでしょうか。
ライニー先輩: まず type ll を実行してみて。
$ type ll
ll is aliased to `ls -la'

定義されていれば、上のように表示されます。表示されない場合は、次の 3 点を確認します。

確認チェックリスト

  1. .bashrc を保存したか(nano なら Ctrl+OEnterCtrl+X
  2. source ~/.bashrc を実行したか
  3. エイリアスの書き方に間違いがないか

よくあるミス:= の前後のスペース

# NG: = の前後にスペースを入れてはいけない
alias ll = 'ls -la'

# OK
alias ll='ls -la'

= の前後にスペースがあると、エラーになります。シェルが ll をコマンド名だと読み違えるからです。

7. ミニ課題:実際にやってみよう

結論: 作る・確かめる・残すの 3 問で、エイリアスの基本を手で確かめる。

リナ: 説明はわかりました。手を動かして確かめたいです。
ライニー先輩: いいね、3 問用意したよ。ターミナルで試してみて。

課題 1: la という名前で、隠しファイルも表示する一覧コマンドを作ろう。

ヒント 1(方向づけ)を見る

短い名前と、その中身になる長いコマンドを、イコールでつなぎます。中身はクォート文字列を引用符(' や ")で囲むこと。スペースなどを含む値をひとまとまりとして扱える。で囲みます。

ヒント 2(コマンド名)を見る

使うのは alias です。隠しファイルも表示するのは ls -a です。

答えを見る
$ alias la='ls -a'
$ la
.  ..  .bashrc  .profile  Documents  Downloads

表示される中身は、お使いの環境で変わります。. で始まる行が出れば成功です。

課題 2: 作った la が本当にエイリアスか確かめよう。そのうえで、1 回だけエイリアスを無視して実行しよう。

ヒント 1(方向づけ)を見る

「その名前が何なのか」を教えてくれるコマンドがあります。無視したいときは、名前の前に記号を 1 つ付けます。

ヒント 2(コマンド名)を見る

確認は type です。1 回だけ無視する記号は \ です。

答えを見る
$ type la
$ \la
la is aliased to `ls -a'
bash: la: command not found

\la はエイリアスを無視します。la というコマンド本体は存在しません。そのため command not found が出れば正解です。

課題 3: la を、次に開くターミナルでも使えるようにしよう。編集の前にバックアップを取ること。

ヒント 1(方向づけ)を見る

新しいターミナルを開くたびに自動で読まれる設定ファイルがあります。まずコピーを取ってから、そこに書き足します。

ヒント 2(コマンド名)を見る

コピーは cp、編集は nano、今すぐ反映するのは source です。ファイルは ~/.bashrc です。nano は Ctrl+OEnterCtrl+X で保存して閉じます。

答えを見る
$ cp ~/.bashrc ~/.bashrc.bak
$ nano ~/.bashrc

末尾に次の 1 行を書き足して保存します。

alias la='ls -a'
$ source ~/.bashrc
$ type la
la is aliased to `ls -a'

1 行だけ足すなら、nano を開かずに次のように打つ方法もあります。>> はファイルの末尾に書き足す記号です。> と書くと中身を全部消してしまうので、ここでは使いません。

$ echo "alias la='ls -a'" >> ~/.bashrc

8. 振り返り

リナ: つまり alias は今の画面だけの設定で、.bashrc に書くと次からも使える、ということですね。
ライニー先輩: その通り。source は「今すぐ読み直す」ための一手間だと考えるといいよ。
リナ: 動かないときは type で正体を調べる。スクリプトの中では効かない。ここまで覚えました。
ライニー先輩: 完璧だね。あとは自分がよく打つコマンドを 2 つか 3 つ、エイリアスにしてみて。

コマンド早見表

やること コマンド
エイリアスを設定 alias ll='ls -la'
設定済み一覧を確認 alias
特定のエイリアスを確認 alias ll
名前の正体を調べる type ll
1 回だけ無視する \ll
エイリアスを削除 unalias ll
全エイリアスを削除 unalias -a
設定を永続化 ~/.bashrc に追記して source ~/.bashrc を実行

今日の 3 行まとめ

  1. alias 名前='コマンド' で別名を作れる。ただし今のターミナルだけで有効
  2. ~/.bashrc に書いて source すれば、次に開いた画面でも使える
  3. 動かないときは type 名前 で正体を調べる。= の前後にスペースを入れない

次に読む

この記事を共有

次の一手