現在のLinuxディストリビューションのほとんどは、ユーザーとOSとのコマンドラインインターフェース(シェル)として「bash」が搭載されています。
bashはデフォルト設定のままでも決して使い勝手が悪いわけではありませんが、設定をカスタマイズしたり履歴を活用することでより使いやすくできます。
そこでここでは、Linuxでbash設定のカスタマイズや、履歴の活用、入力補完機能でコマンド操作をより快適かつ便利にする方法を解説します。
目次
shoptコマンド
shoptコマンドは、bashの動作設定を行うためのコマンドで、さまざまなbashのオプション設定をshoptコマンドで有効化/無効化できます。どのようなオプション設定があるかは、shoptコマンドを単体で実行することで確認できます。
shoptコマンドで有効化をおすすめするオプションは「autocd」です。
Linuxでコマンド操作を行う際、もっともよく使うコマンドのひとつとして挙げられるのが、カレントディレクトリを移動する「cd」コマンドですが、ディレクトリの移動のたびに毎回cdと打ち込むのが面倒に感じることがあります。
そのようなときは「autocd」オプションを有効化することで、cdコマンドを入力せずにディレクトリ名のみでカレントディレクトリを移動できるようになります。
$ shopt -s autocd
autocdオプションを無効化に戻したいときは、以下のようにコマンドを実行します。
$ shopt -u autocd
なお、shoptコマンドでオプションを有効化してもログアウトすると設定が戻ってしまうため、設定を永続化したいときは、bashの設定ファイル「.bashrc」に有効化するコマンドを追記して、bash起動時に実行されるよう設定します。
$ vi ~/.bashrc
shopt -s autocd
入力履歴の活用
bashには、履歴機能が搭載されており、過去に実行したコマンドなどを呼び出して簡単に再実行させたり、一部を編集して別のコマンドとして実行することができます。
履歴は「~/.bash_history」ファイルに保存されており、履歴を使用するときは、主に以下のキーを使用します。
キー | 説明 |
---|---|
「↑」キーまたは「Ctrl+P」キー | 1つ前のコマンドを表示 |
「↓」キーまたは「Ctrl+N」キー | 1つ後ろのコマンドを表示 |
また、historyコマンドを実行することで、過去に実行したコマンドを一覧表示させることもできます。たとえば、最近実行した5件の実行履歴を表示したいときは、以下のようにコマンドを実行します。
$ history 5
29 vi /etc/hosts.allow
30 vi /etc/hosts.deny
31 cat .bash_history
32 man bash
33 history 10
履歴の左側に表示されている数字はヒストリ番号で「!ヒストリ番号」と入力することで、その番号のコマンドを実行でき、たとえば「!32」と入力すると「man bash」が実行できます。
ターミナル間で履歴を共有
Linuxに慣れてくると、1台のLinuxマシンに複数のターミナルから接続して異なる作業を並行して行うことがあります。そのようなときターミナル間で履歴(ヒストリー)をリアルタイムで共有できればとても便利です。
履歴をリアルタイムで共有したいときは、bashの設定ファイル「.bashrc」に、以下の内容を追記します。
$ vi ~/.bashrc
export PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
これで、ターミナル間でほぼリアルタイムに履歴を同期できるようになります。「ほぼリアルタイム」と記述しているのは、上の方法では履歴の同期がプロンプトが表示される直前に行われるためで、ターミナルAで実行した直前のコマンドをターミナルBからすぐに呼び出したい場合は、ターミナルBで一度「Enter」キーを押してプロンプトを再表示する必要があるためです。
記録できる履歴の件数を増やす
多くのLinuxディストリビューションのbashでは、履歴の保存件数はデフォルトで1,000件のため、少ないと感じるときがあります。そのようなときは、履歴の保存件数を増やしておくとよいでしょう。
bashの履歴の件数を増やすときは、bashの設定ファイル「.bashrc」に「HISTFILESIZE」で「.bash_history」ファイルに保存される履歴の件数を、「HISTSIZE」でbashの起動時に読み込まれる履歴の件数を指定します。
以下では、両方を5000件で設定しています。
$ vi ~/.bashrc
HISTSIZE=5000
HISTFILESIZE=5000
入力補完
bashには入力補完機能が搭載されており、デフォルトではディレクトリ名やファイル名を補完してくれます。たとえば、ディレクトリ名の一部を入力してからTABキーを押すと、自動的にディレクトリ名を補完してくれます。
これだけでも便利ですが「bash-completion」というツールをインストールすれば、さらにプログラム名やサービス名など、より広範囲で入力を補完してくれるようになり、コマンドの入力をさらに高速化できます。
bash-completionは、標準でインストールされているディストリビューションもあり、インストールされていない場合も、ほとんどのディストリビューションでは、標準のリポジトリから簡単にインストールできます。たとえば、RedHat系のディストリビューションでは、以下のコマンドでインストールできます。
# dnf install bash-completion
あとがき
ここで紹介したカスタマイズを行っておけば、コマンド操作がさらに高速ができ使いやすさもアップするでしょう。ご活用あれ。