Linuxでエイリアスとシェル関数を作成する方法【初心者向け完全ガイド】
GNU/Linuxシステムを最大限に活用したいなら、コマンドプロンプトやシェルスクリプトの知識は今なお欠かせません。コマンドラインでの作業に慣れてくると、日々使っているコマンドの多くが、実際には利用可能なコマンド全体のごく一部であることに気づくはずです。ほとんどの作業は習慣的に行われており、同じコマンドを毎日同じように入力していることが多いのです。

代表的なコマンドユーティリティの多くは、入力の手間を省くために短い名前を採用しています。たとえば「list」の代わりにls、「change-directory」の代わりにcdと入力します。それでもなお、Linuxユーザーは同じコマンドを何度も繰り返し実行する必要があります。同じコマンドを何度も入力したりコピーしたりするのは生産性を下げ、本来の作業への集中を妨げてしまいます。
長いコマンドの入力にかかる時間を減らせれば理想的ですよね。コマンドラインでの作業時間を最小限に抑える強力な手段が2つあります。それがシェルエイリアスとシェル関数です。この2つを活用すれば、繰り返しの多いタスクを効率化し、長い処理を短縮し、自分がいつも使うオプション付きのコマンドを独自の名前で登録できます。
自分のニーズに合わせたコマンドを定義することで、反復作業の負担を大幅に軽減できるのです。
エイリアスとシェル関数の違いとは?
エイリアスとシェル関数(シェルスクリプト)は、本質的には同じ種類の役割を果たします。どちらもBashシェルの一連の機能を定義して名前を付け、その名前を呼び出すだけで実行できるようにする仕組みです。すべての手順やコマンドを毎回入力するよりも、名前を入力する方がはるかに簡単で便利です。
両者の違いは「複雑さ」と「規模」にあります。関数(スクリプト)は長く複雑なコードブロックを扱うのに適しており、エイリアスは短く簡潔なコマンドセットを格納するのに最適です。
シェルエイリアスとは
シェルエイリアスとは、コマンドまたは一連のコマンドを参照するためのカスタムショートカットです。頻繁に実行する長いコマンドに対して、覚えやすい別名を付けることができます。
コマンドラインで入力すると、シェルはまず書かれた内容をエイリアスのリストの中から探します。一致するものが見つかれば、そのエイリアスに対応するテキストへ置き換えられ、その後、置き換え後のコマンドライン全体が再度評価されて実行されます。
実は、あなたはすでにLinuxシステム上でエイリアスを使ったことがあるかもしれません。多くのLinuxディストリビューションでは、ユーザーアカウントの「.bashrc」ファイルに、人気のあるエイリアスがデフォルトでいくつか登録されているからです。
エイリアスの先へ:シェル関数
似ているようで同一ではないコードブロックは、エイリアスでは置き換えられません。エイリアスには以下のような制限があります。
- エラー処理やカスタム終了コードの返却ができない
- フロー制御(条件分岐・ループ)が使えない
- 変数を利用できない
これらが必要になったら、シェル関数の出番です。シェル関数は完全なサブスクリプトとして構造化されたコードブロックで、一度書けば必要な任意のスクリプトから呼び出せます。
エイリアスの基本構文
Bashでエイリアスを作成するのは非常に簡単です。構文は次のとおりです。
alias エイリアス名="実行するコマンド"
現在のセッションで新しいBashエイリアスを作成する手順は以下の通りです。
- 「alias」と入力する
- 続けてエイリアス名を宣言する
- 等号(=)を付ける
- 最後に、エイリアス呼び出し時に実行されるコマンドを記述する
コマンドは必ず引用符で囲み、等号の前後にスペースを入れないでください。ここにスペースがあるとコマンドが壊れます。また、各エイリアスは必ず新しい行で宣言します。
実際に試してみよう:「ll」エイリアスの作成例
具体例で確認しましょう。Linuxのコマンドラインで最もよく使われるコマンドのひとつが「ls」です。「ls」は「-la」オプションと組み合わせて使われることが多く、隠しファイルを含むすべてのファイルとディレクトリを詳細なリスト形式で表示します。
そこで、ls -laコマンドのショートカットとなる「ll」というシンプルなBashエイリアスを作成してみましょう。
- ターミナルウィンドウを開きます
- 以下のように入力します
alias ll="ls -la"
そしてEnterキーを押します
- コンソールに「ll」と入力してEnterキーを押します

- 出力結果は「ls -la」を直接入力した場合と同じになります
ただし、上記で定義したエイリアス「ll」は現在のシェルセッションでのみ有効です。セッションを閉じたり、別のターミナルから新しいセッションを起動したりすると、このエイリアスは利用できなくなります。

エイリアスを永続化する方法については後ほど解説します。なお、ここの例はBashシェル向けですが、考え方とコードの大部分は他のシェルにもそのまま応用できます。
あらかじめ定義されているエイリアスを確認する
システムには最初からいくつかのエイリアスが定義されています。定義済みの全エイリアス一覧を表示するには、引数なしで「alias」コマンドを実行します。
alias
これは本記事の検証に使用したUbuntuマシン上のエイリアス一覧です。独自に定義したカスタムエイリアスも、このリストに表示されます。
lsコマンドに関するさまざまなエイリアスや、grep系コマンドにカラー出力を提供するエイリアスのグループがあります。たとえば上記のようなエイリアスが定義されている環境では、次のように入力すると:
grep
実際には次のように解釈されます:
grep --color=auto
ここには重要なポイントがあります。エイリアスは既存のコマンドと同じ名前を持てるということです。さらに、エイリアスの中に元のコマンド自体を含めることさえ可能です。
grepエイリアスの定義は以下のようになっています。
alias grep='grep --color=auto'
- 「alias」コマンドでエイリアスを定義します
- 次にエイリアス名を指定します。この例では「grep」です
- 等号(=)がエイリアス名とエイリアスの本体をつなぎます。非常に単純なエイリアスを除き、本体はシングルクォート「'」で囲みます
- エイリアスの本体は、コマンドラインでエイリアスが使用されたときに実行される部分です
- このエイリアスの本体は、--color=autoオプション付きでgrepコマンドを呼び出すだけです
便利な「alert」エイリアス
一覧の先頭には、少し複雑そうに見える「alert」というエイリアスがあります。参考までに説明すると、alertエイリアスはコマンドの完了を通知してくれるものです。コマンドが成功したかどうかも示してくれ、画面上部にグラフィカルなシステム通知を表示します。
簡単な例を見てみましょう。sleepコマンドで5秒間待機した後、alertエイリアスを呼び出します。エイリアスは直前のコマンドの結果をチェックし、履歴ファイルから最後のコマンドを取り出し、そのコマンドが正常に完了したかどうかを判定して、結果をシステム通知として表示します。
コマンドが期待どおりに完了した場合、通知のアイコンは小さなターミナルウィンドウになります。エラーコードが返された場合は、赤いエラーアイコンが表示されます。
sleep 5; alert

5秒後、次のようなシステム通知が表示されます:

アイコンが小さなターミナルウィンドウなので、すべて正常に完了したことを意味します。今度は、確実に失敗するコマンドで試してみましょう:
DoomedToFail; alert

今度はシステム通知にエラーアイコンが表示されました。

シンプルなエイリアスを定義する
すでに見たように、エイリアスを定義するには「alias」コマンドを使用します。
ここでは、clearコマンドの別名を作成してみます。エイリアス名は「cls」とし、clearコマンドを呼び出すようにします。
このエイリアス定義は非常に単純なので、シングルクォートで囲む必要はありません。ただし、本体がこれより複雑な場合やスペースを含む場合は、必ずシングルクォートで囲んでください。エイリアスを定義し、lsでターミナルに出力を表示させてから、新しいエイリアスclsで画面をクリアしてみます。
alias cls=clear ls -l cls

画面がクリアされました。成功です——ただし、この効果は一時的なものです。このエイリアスはターミナルウィンドウが開いている間しか存続しません。ウィンドウを閉じると、エイリアスは消えてしまいます。
「.bashrc」ファイルでエイリアスを永続化する
「最初から用意されているエイリアスはどこで定義されているのか?」と疑問に思った方もいるでしょう。答えは、ホームフォルダ内の「.bashrc」ファイルです。このファイルは対話型シェルを起動するたび——つまりターミナルウィンドウを開くたび——に読み込まれ、中のコマンドが実行されます。
ホームフォルダで次のコマンドを入力すると、「.bashrc」ファイルの内容をシンタックスハイライト付きで確認できます。
gedit .bashrc

これにより、geditエディタが起動し、「.bashrc」ファイルが読み込まれます。

ハイライトされた部分が、エイリアスが定義されている箇所です。
ドキュメントをスクロールすると、エイリアスに関連するもう2つのセクションが見つかります。

1つ目はalertエイリアスの定義です。2つ目はif文で、「もし『.bash_aliases』ファイルが存在するなら、それを読み込む」という意味になります。
定義したいエイリアスが少数だけなら、「.bashrc」ファイルに直接記述してもよいでしょう。ls関連のエイリアスセクションの下に追加するのがおすすめです。
一方、多数のエイリアスを作成する予定がある場合や、エイリアスを独立したファイルで管理したい場合は、「.bash_aliases」ファイルに定義しましょう。「.bash_aliases」ファイルを使うメリットは次のとおりです。
- 誤って「.bashrc」ファイルの設定を変更してしまうリスクがない
- エイリアスが「.bashrc」から分離されているため、新しいシステムへの移行・コピーが容易
エイリアスの名前は覚えやすいものにしましょう。将来の参照用にコメントを追加しておくことも推奨されます。
「.bash_aliases」ファイルにエイリアスを保存する
「.bash_aliases」ファイルはデフォルトでは存在しないため、自分で作成する必要があります。次のコマンドでファイルを作成できます。
touch .bash_aliases

次に、ファイルを編集していくつかのエイリアスを追加しましょう。このコマンドで「.bash_aliases」ファイルがgeditエディタで開きます。
gedit .bash_aliases

ここでは3つのエイリアスを追加しました。1つ目は先ほど使用した「cls」エイリアスです。2つ目は「h」で、historyコマンドを呼び出すショートカットです。
3つ目は「ftc」(file type count=ファイルタイプの集計)というエイリアスです。
このエイリアスはやや複雑なため、シングルクォートで囲まれています。パイプで連結された一連のコマンドチェーンを使用し、さまざまな拡張子とディレクトリ名を、それぞれの出現回数付きのソート済みリストとして出力します。
「.bash_aliases」ファイルを保存した時点で、エイリアスがすぐに使えるようになると思うかもしれませんが、そうはなりません。Bashシェルがファイルを読み込んで初めて、エイリアス定義が有効になります。これは対話型シェルを開くたびに行われます。
Bashの組み込みコマンド「.」(ドット) を使えば、ファイル内のコマンドを読み込んで実行できます。「.bash_aliases」ファイルは「.bashrc」の処理時に読み込まれるので、テストでは「.bashrc」を呼び出します。こうすることで、「.bashrc」から「.bash_aliases」が正しく呼び出され、エイリアスが有効になっていることを確認できます。
使用するコマンドは以下のとおりです。
gedit .bash_aliases
「.bash_aliases」ファイルを編集します。
. .bashrc
「.bashrc」内のコマンドを読み込んで実行し、それによって「.bash_aliases」が呼び出されます。
ftc
ftcエイリアスを呼び出します。

エイリアスが応答しました。これはBashが「.bashrc」と「.bash_aliases」の両方を読み込み、新しいエイリアスが有効になったことを意味します。
これで、思いついたときにいつでも「.bash_aliases」ファイルへ新しいエイリアスを追加できます。同じ操作を2〜3回以上繰り返していることに気づいたら、エイリアス化を検討してみてください。
エイリアスを削除する方法
Bashにエイリアスを認識させなくする、つまり削除するためのコマンドも用意されています。その名もずばり「unalias」です。
使い方は、Bashに忘れさせたいエイリアスの名前を指定するだけです。たとえば、以前作成した「ll」エイリアスを削除するには次のようにします。
unalias ll

unaliasは、自分で定義したエイリアスだけでなく、事前に定義されていたエイリアスの削除にも使えます。
システムからすべてのエイリアスを削除するには、-a(all)オプションを使用します。
unalias -a
ただし、Bashが忘れたことは永続的ではありません。次にターミナルウィンドウを開くと、「忘れられた」エイリアスは復活します。完全に削除したい場合は、「.bashrc」および「.bash_aliases」ファイルから該当する定義を取り除く必要があります。
将来的にまた使いたくなる可能性があるなら、ファイルから削除するのではなく、各行頭にハッシュ記号「#」を付けてコメントアウトしておきましょう。「.bash_aliases」ファイルを無効化したい場合は、ファイル名を変更すればOKです。「.bashrc」から見えなくなれば読み込まれません。これらの手順を元に戻せば、エイリアスは簡単に復元できます。
なお、エイリアスを一時的に回避したい場合(たとえばlsをls -aにエイリアスしている場合など)は、次のようにバックスラッシュを付けて入力します。
\ls
こうすると、エイリアス版ではなく通常のコマンドが実行されます。

aliasコマンドのヘルプ
- --helpオプション:ヘルプ情報を表示します
構文:
alias --help

シェル関数の基本
エイリアスでは対応できないケースのひとつが、1つ以上の引数を受け取る必要がある場合です。そんなときに活躍するのがBash関数です。
構文
Bash関数の作成はそれほど難しくありません。次の2つの形式のどちらかで宣言できます。
function_name () {
[commands]
}または
function function_name {
[commands]
}2つ目の形式は1行に圧縮でき、コマンドをセミコロンで区切って記述できます。この場合、最後のコマンドの後にもセミコロンが必須です。
function_name () { command1; command2; }エイリアスと同様に、Bashシェル関数も「.bashrc」ファイル内で定義できますが、専用の定義ファイルにまとめる方がすっきり管理できます。「.bash_aliases」ファイルの慣例に倣って、「.bash_functions」という名前にしましょう。
そのためには、「.bashrc」ファイルにこの定義ファイルを読み込ませる必要があります。「.bash_aliases」を読み込んでいるコード部分をコピーして修正すればOKです。geditを起動して「.bashrc」ファイルを読み込みます。
gedit .bashrc

以下のハイライト部分を追加してください。
エイリアスのセクションを選択してCtrl+Cでコピーし、新しいセクションを配置したい場所でCtrl+Vで貼り付けます。あとは「.bash_aliases」と書かれた2箇所を「.bash_functions」に変更するだけです。

変更を保存してgeditを閉じます。
次に、「.bash_functions」ファイルを作成・編集し、関数定義を記述していきます。
touch .bash_functions gedit .bash_functions

空の「.bash_functions」ファイルがgeditで開きます。
実践例:「up」関数を作ってみよう
ここでは「up」というシンプルな関数を追加します。upは1つのコマンドライン引数(数字)を受け取り、その回数だけcd ..を実行します。たとえば次のコマンドを実行すると:
up 2
upはcd ..を2回呼び出し、ディレクトリツリーを2階層上に移動します。
関数の定義方法はいくつかありますが、ここでは次のように書きます。
function up() {「function」という単語は省略可能です。伝統的な書き方が好きなら付ければいいし、入力するのが面倒なら省略しても問題ありません。
gedit上の関数全体は次のようになります。

function up() {ここが関数定義の始まりで、関数名を「up」としています。
levels=$1
「levels」という変数を作成し、第1引数の値を設定します。この引数は、関数呼び出し時にユーザーが指定する数字です。「$1」は「1番目のコマンドライン引数」を意味します。
while [ "$levels" -gt "0" ]; do
ここでループに入ります。「levelsの値が0より大きい間、ループ本体の処理を行う」という意味です。
ループ本体には2つのコマンドがあります。
cd ..
ディレクトリツリーを1階層上に移動します。
levels=$(($levels - 1))
levelsに、現在の値より1小さい新しい値を設定します。
その後、ループの先頭に戻り、levelsと0の比較が再び行われます。levelsが0より大きければループ本体が再度実行され、そうでなければループが終了し、done文に到達して関数が完了します。
変更を保存してgeditを閉じましょう。
「.bashrc」を読み込んで実行すると、「.bash_functions」ファイル内のコマンドも読み込まれて実行されるはずです。
. .bashrc

ディレクトリツリー内のある場所へ移動し、up関数を使って上位の階層へ戻ることで、動作をテストできます。
cd ./work/backup/ up 2

関数は正常に動作し、ディレクトリツリーを2階層上へ移動できました。
typeコマンドで正体を確認する
エイリアスと関数を増やしていくと、「このコマンドはエイリアスだっけ? 関数だっけ?」と分からなくなることがあります。そんなときは「type」コマンドを使えば思い出せます。嬉しいことに、定義内容も一緒に表示してくれるのです。
ftcエイリアスとup関数に対してtypeを使ってみましょう。
type ftc type up

それぞれのコマンドの種類と定義内容が、とても便利な形で表示されます。
さあ、コレクションを始めよう
エイリアスと関数を活用すれば、コマンドラインでの作業速度は劇的に向上します。コマンド列を短縮でき、標準コマンドに自分が常用するオプションを組み込めます。便利なワンライナーや有用な関数を見つけたら、それを自分好みにアレンジして「.bash_aliases」や「.bash_functions」ファイルに追加していきましょう。これらを積極的に活用することで、シェルでの作業時間がより快適でシンプルなものになります。
ただし、既存のコマンドを潜在的に破壊的な動作で再定義するのは避けてください。逆に、安全なバリエーションへエイリアスする(たとえば再帰削除の前に必ず確認を求めるなど)のも、それに依存してしまった状態で、その設定がない別のシステムを使うときに裏目に出ることがあります。エイリアス化の候補を探すなら、自分のコマンド履歴から最もよく使うコマンドを調べてみるのがおすすめです。
-
Linuxでシェルスクリプトを作成する方法【初心者向け基本ガイド】
シェルスクリプトの作成は、Linuxユーザーが必ず身につけておきたい最重要スキルのひとつです。シェルスクリプトを活用すれば、手作業で一行ずつ実行すると面倒な反復タスクを効率的に自動化できます。このチュートリアルでは、すべてのLinuxユーザーが押さえておくべき基本的なシェルスクリプトの操作方法を、実例とともにわかりやすく解説します。1. 簡単なシェルスクリプトを作成するシェルスクリプトとは、ASCIIテキストで構成されたファイルのことです。まずはテキストエディタを使って、簡単なシェルスクリプトを作成してみましょう。テキストエディタにはコマンドライン型とGUI型のさまざまな種類がありますが、本ガ
-
Linuxでカスタムシェル関数とライブラリを作成・活用する方法
Linuxにおいて、シェルスクリプトはシステム管理タスクの実行や自動化、簡単なコマンドラインツールの作成など、さまざまな場面で役立ちます。本記事では、Linux初心者の方に向けて、独自のシェルスクリプトを保存すべき信頼性の高い場所、カスタムシェル関数やライブラリの書き方、そして他のスクリプトからライブラリ内の関数を呼び出す方法について解説します。 シェルスクリプトの保存場所 スクリプトを実行するときに毎回フルパス(絶対パス)を入力せずに済むようにするには、そのスクリプトを $PATH 環境変数に含まれるいずれかのディレクトリに保存しておく必要があります。 現在の $PATH の内容は、以下のコ