bashはコマンドライン編集が行える。 エディタでテキストを編集するのと同じようにUNIXのコマンドラインを編集することができる。

例えば、以前に入力したコマンドを編集してコマンドラインとして実行できる。

2つのモード

bashにはemacsモードとviモードと呼ばれるモードがある。 個人的にはvimをよく使うために今回はviモードについてのみ取り上げる。

履歴ファイルについて

bashのコマンド履歴は.bash_historyファイルによって管理される。 シェルを対話形式で起動するたびにホームディレクトリの.bash_historyから最初の履歴リストが読み込まれる。 シェルを終了する際には、履歴リストが.bash_historyファイルに保存される。 環境変数HISTFILEを設定することでこのファイルの名前を自由に変更できる。

viモード

コマンドライン編集を有効化する

デフォルトではemacsモードが有効化されているため、以下のコマンドラインを実行する。

$ set -o vi

.inputrcファイルでreadline変数を設定することでも設定できる。

制御モードの基本コマンド

  • h: 左に1文字移動
  • l: 右に1文字移動
  • w: 右に1ワード移動
  • b: 左に1ワード移動
  • W: 次のノンブランクワードの先頭へ移動
  • B: 前のノンブランクワードの先頭へ移動
  • e: 現在のワードの末尾へ移動
  • E: 現在のノンブランクワードの末尾へ移動
  • 0: コマンドラインの先頭へ移動
  • ^: コマンドラインの最初のノンブランク文字へ移動
  • $: コマンドラインの末尾へ移動

入力と変更のコマンド

  • i: 現在の文字の前にテキストを挿入する
  • a: 現在の文字の後ろにテキストを挿入する
  • I: コマンドラインの先頭にテキストを挿入する
  • A: コマンドラインの末尾にテキストを挿入する
  • R: 既存のテキストを上書きする

削除のコマンド

  • dh: 後方に1文字削除
  • dl: 前方に1文字削除
  • db: 後方に1ワード削除する
  • dw: 前方に1ワード削除する
  • dB: 後方に1ノンブランクワード削除する
  • dW: 前方に1ノンブランクワード削除する
  • d$: コマンドラインの末尾まで削除する
  • d0: コマンドラインの先頭まで削除する

削除コマンドの省略形

  • D: d$と同様
  • dd: 0d$と同様
  • C: c$と同様
  • cc: 0c$と同様
  • x: dlと同様
  • X: dhと同様