第6章 6-5 / シェルの力

エイリアスとプロンプト設定

このページで叩くコマンドと到達点

前提:6-4が完了し、~/scriptsに練習スクリプト一式(hello.sh・greet.sh・judge.sh・loop.sh・args.sh・welcome.sh・logclean.shなど)があり、ホームディレクトリにいる状態から始めます。第6章の最後は、長いコマンドに自分だけの短い呼び名を付けるaliasと、ターミナルの見た目を決めるプロンプト(PS1)のカスタマイズです。設定ファイル.bashrcに書き込むことで、次回ログインしてもずっと使える「自分だけの操作環境」を作り上げます。第6章の総仕上げとして、ここまでの学びを自分の手元に定着させましょう。

このページではSET 1〜3、合計30行のコマンドを上から順に叩きます。手打ち推奨(コピーは確認用)です。

SET 1 ― aliasで自分専用のコマンドを作る

ubuntu@lightsail: ~
  1. $alias
  2. alias ll='ls -alF'
  3. alias ls='ls --color=auto'
  4. $ll
  5. $type ll
  6. ll is aliased to `ls -alF'
  7. $type cd
  8. cd is a shell builtin
  9. $alias study='cd ~/practice'
  10. $study
  11. $pwd
  12. /home/ubuntu/practice
  13. $alias myscripts='cd ~/scripts'
  14. $myscripts
  15. $cd ~
解説 ― SET 1 で何をしたか

1行目のaliasを引数なしで実行すると、今のシェルに登録済みのエイリアス一覧が表示されます。エイリアス※1とは「コマンドの別名」のことで、出力例のとおりUbuntuの.bashrcには最初からll='ls -alF'のような便利な設定がいくつも用意されています。llls -alF(詳細・隠しファイル込み・種類を記号付きで表示)の短縮名で、第1章から使ってきたls -laとほぼ同じ内容を、たった2文字で呼び出せる設定です。

2行目で実際にllと打つと、ls -alFを打ったのと同じ結果が返ってきます。3行目のtype(第1章1-5で学習済み)にエイリアス名を渡すと、それが「何の別名なのか」を教えてくれます。4行目のようにcdのようなエイリアスではないコマンドにtypeを使うと、出力例のとおり「シェル自体に組み込まれた機能(シェルビルトイン)」であることが表示され、エイリアスとは違う種類のコマンドであることがわかります。

5行目のalias study='cd ~/practice'が、自分で新しく作るエイリアスです。alias 呼び名='実際のコマンド'という書き方で、好きな短縮名を登録できます。6行目でstudyとだけ打つと、出力例のとおり~/practiceへ一発で移動できるようになります。長いパスを毎回打たずに済むので、よく行く場所ほどエイリアス化する価値があります。

8行目のalias myscripts='cd ~/scripts'のように、同じ考え方でいくつでもエイリアスを増やせます。9行目で早速呼び出し、6-2から使い続けている~/scriptsへも一発で移動できることを確認します。最後に10行目のcd ~でホームディレクトリへ戻ります。

ゆみちゃん
ゆみ

エイリアスって「自分専用の短縮ダイヤル」みたいな感覚だよ! よく使うコマンドほど短い名前を付けておくと、タイピングの手間も減るし、打ち間違いも減るし、いいことずくめ。study→~/practiceみたいに、自分の生活に合わせて名付けるのが楽しいポイント!

SET 2 ― プロンプト(PS1)を一時的に変える

ubuntu@lightsail: ~
  1. $echo $PS1
  2. $PS1="[\u@\h \W]\$ "
  3. [ubuntu@lightsail ~]$
  4. $cd ~/scripts
  5. [ubuntu@lightsail scripts]$
  6. $cd ~
  7. $PS1="\d \u:\W\$ "
  8. Fri Jul 03 ubuntu:~$
  9. $PS1="[\u@\h \W]\$ "
  10. $whoami
  11. ubuntu
  12. $bash
  13. ubuntu@lightsail:~$
  14. $echo $PS1
  15. $exit
解説 ― SET 2 で何をしたか

1行目のecho $PS1で、今表示されているプロンプト(ubuntu@lightsail:~$のような文字列)の設定内容を確認します。これも6-1で学んだ環境変数の一種で、PS1※2という名前の変数にプロンプトの見た目が入っています。

2行目のPS1="[\u@\h \W]\$ "で、この見た目を書き換えます。\uはユーザー名、\hはホスト名(サーバー名)、\Wは現在いるディレクトリ名(パス全体ではなく最後の部分だけ)、\$は一般ユーザーなら$・rootなら#を自動で出し分ける記号です。実行すると出力例のとおりプロンプトの見た目が変わります。

3行目でcd ~/scriptsすると、出力例のとおり\Wの部分が自動でscriptsに変わり、今いる場所がひと目でわかるようになります。5行目のPS1="\d \u:\W\$ "のように、\d(今日の日付)を組み合わせた別のパターンも試してみます。組み合わせ方は自由なので、自分が見やすい並びを探してみてください。6行目でSET 2の最初に決めた形に戻しています。

7行目のwhoami(第0章で学習済み)を実行してもプロンプトの見た目には影響しませんが、これはPS1があくまで「表示のされ方」を決めているだけで、ユーザー自体を変えているわけではないことの確認です。

ここまでの変更は今のシェルだけの一時的な設定で、8行目のbashで新しいシェルを立ち上げると、出力例のとおり6-1の環境変数のときと同様に元の見た目に戻ってしまいます。9行目のecho $PS1で確認すると、新しいシェルでは初期設定のプロンプトに戻っていることがわかります。10行目のexitで新しいシェルを抜け、元のシェルに戻ります。この「一時的にしか効かない」不便さを解消するのが、次のSETで行う.bashrcへの書き込みです。

POINT

\u(ユーザー名)・\h(ホスト名)・\W(現在地)・\$(権限に応じた記号)は、プロンプトのカスタマイズで特によく使う4つの記号です。まずはこの4つだけ覚えれば十分実用的なプロンプトが組めます。

SET 3 ― .bashrcに書き込んで永続化する

ubuntu@lightsail: ~
  1. $tail -n 5 ~/.bashrc
  2. $wc -l ~/.bashrc
  3. $nano ~/.bashrc
  4. (ファイル最後尾に移動し、下の3行を追記して保存)
  5. alias study='cd ~/practice'
  6. alias myscripts='cd ~/scripts'
  7. PS1="[\u@\h \W]\$ "
  8. $tail -n 4 ~/.bashrc
  9. $source ~/.bashrc
  10. [ubuntu@lightsail ~]$
  11. $type study
  12. study is aliased to `cd ~/practice'
  13. $type myscripts
  14. myscripts is aliased to `cd ~/scripts'
  15. $study
  16. $myscripts
  17. $cd ~
解説 ― SET 3 で何をしたか

1行目のtail -n 5 ~/.bashrc(第1章1-4で学習済み)で、ホームディレクトリにある.bashrc※3というファイルの末尾を確認します。.bashrcはbashが起動するたびに自動で読み込まれる設定ファイルで、SET 1で見たllのエイリアスも、実はこのファイルの中にあらかじめ書かれています。2行目のwc -lで、書き換える前の行数を数値として記録しておきます。

3行目でnano ~/.bashrcを開き、ファイルの一番下にSET 1・SET 2で試した設定を追記します。alias study='cd ~/practice'alias myscripts='cd ~/scripts'PS1="[\u@\h \W]\$ "の3行を書き加えることで、ターミナルを起動するたびにコマンドを打ち直さなくても、この設定が自動で反映されるようになります。4行目のtail -n 4で、追記が正しく保存されたことを確認します。

ただし.bashrcはファイルを保存しただけでは反映されず、本来は次にログインし直したときに読み込まれます。今すぐ反映させたいときは、5行目のsource ~/.bashrcを使います。sourceは指定したファイルの中身を、新しいシェルを起動せずに今のシェルへそのまま読み込ませるコマンドです。実行すると出力例のとおりプロンプトの見た目がその場で変わり、以後は再ログインしなくても新しい設定が使えます。

6行目のtype study7行目のtype myscriptsで、新しく作った2つのエイリアスが正しく登録されていることを確認し、89行目で実際に呼び出して動作を確かめます。最後に10行目のcd ~でホームディレクトリへ戻り、次の章に備えてこのページを終えます。これで、あなたの.bashrcには、あなた専用の操作環境が刻み込まれました。

ゆみちゃん
ゆみ

.bashrcを育てていくのって、スマホのホーム画面を自分好みに並べ替えていく感覚に似てるなってあたしは思う! 最初はUbuntuが用意してくれた設定だけだったけど、ここに自分のエイリアスやプロンプトを足していくたびに、このサーバーが「自分の場所」になっていく感じがして地味に嬉しいんだよね。

POINT

.bashrcを書き換えたらsource ~/.bashrcで即反映、を1セットで覚えてください。「設定したのに反映されない!」と焦ったときは、大抵sourceを忘れているだけです。

まとめ

6-5では、aliasで自分専用の短縮コマンドを作り、PS1でプロンプトの見た目を整え、.bashrcに書き込んでsourceで反映させるところまでを体験しました。これで第6章「シェルの力」は完了です。このページで叩けるようになったコマンドを一覧にまとめます。

コマンド / 記法何をするか覚え方
alias登録済みのエイリアス一覧を表示する引数なしで一覧表示
alias 呼び名='コマンド'コマンドに自分専用の短縮名を付ける短縮ダイヤルを登録するイメージ
type コマンド名それが何の実体・別名かを調べる第1章で学習済み、エイリアス調査にも使える
$PS1プロンプトの見た目を決める環境変数Prompt String 1
\u \h \W \$PS1の中でユーザー名・ホスト名・現在地・記号を表すuser / host / Working dir / $か#
~/.bashrcbash起動時に自動で読み込まれる設定ファイル自分だけの設定を書き足す場所
source ~/.bashrc再ログインせずに設定を今すぐ反映する再読み込みボタン

次のページ「7-1. 自分のページを公開する」からはいよいよ第7章「卒業制作」です。nginxを使って、あなたが作ったサーバーの上に、実際に世界からアクセスできる自分のページを公開します。

脚注 ─ 用語解説
  1. エイリアス … 既存のコマンドに付ける別名。alias 呼び名='コマンド'で登録し、長いコマンドを短く呼び出せるようにする。
  2. PS1 … プロンプト(コマンド入力を待つ表示)の見た目を決める環境変数。\u\hなどの特殊記号を組み合わせて自由にデザインできる。
  3. .bashrc … ユーザーごとのホームディレクトリにある、bashが起動するたびに自動で読み込まれる設定ファイル。エイリアスやプロンプトの設定を書き足す定番の場所。