1|2viスタイルのキー操作でコマンドラインを編集するvi(もしくはvim)は、どのLinuxにもほぼデフォルトでインストールされていて、非常によく使われる軽量なエディタである(emacsは追加インストールしないと利用できないことが多い)。そのため、bashにもvi風にキー操作ができる編集スタイルが用意されている。viは文字挿入モードやコマンドモード、カーソル移動モードなどを持つエディタなので、コマンドラインの編集にはやや使いづらい。そのためか、bashのデフォルトはemacsスタイルに設定されている。emacs」を実行する)。......viスタイルに設定するuser01@DESKTOP-5TV2I57:~$このスタイルにするとvi風のキーバインドになるが、最初から[i]キーが押されていて、挿入モードが有効な状態になっている。挿入モードを終了してカーソル移動などを行いたければ、まず[Esc]キーを押してから操作すること。以下にviスタイルにおける主なキー割り当てをまとめておく。機能[Esc]挿入モードや変更、追加モードなどを終了する。現在のモードがよく分からなくなったら取りあえず[Esc]を押しておこう[i]カーソル位置の前に挿入するモードに入る。挿入(や追加など)の終了は[Esc](以下同)[a]カーソル位置の後ろに挿入(追加)するモードに入る[I]現在行の先頭に挿入するモードに入る[A]現在行の末尾に追加するモードに入る[k]もしくは[-]履歴を1つ前へ進める[j]もしくは[+]履歴を1つ次へ進める[h]カーソルを1文字分左へ移動する[l]カーソルを1文字分右へ移動する[b]カーソルを1つ前の単語へ移動する(単語間の区切りは空白と記号文字とする)[w]カーソルを1つ後の単語へ移動する[e]カーソルを現在の単語の末尾へ移動する[B]カーソルを1つ前の単語へ移動する(単語間の区切りは空白文字とする。以下同)[W]カーソルを1つ後の単語へ移動する[E]カーソルを現在の単語の末尾へ移動する[0]カーソルを行頭へ移動する[^]カーソルを行頭にある(空白以外の)文字へ移動する[$]カーソルを行末へ移動する[x]カーソルの位置の文字を1文字削除する[X]カーソルの位置の直前の文字を1文字削除する[p]削除バッファの内容をカーソル位置に貼り付ける[c]<移動>カーソル位置から指定した移動先までの文字を置換する。<移動>には、[h]や[l]などの移動系コマンドを指定する(以下同)[d]<移動>カーソル位置から指定した移動先までの文字を削除する[D]カーソル位置から行末までを削除する。[d][$]と同じ[r]<文字>カーソル位置の1文字を置換する[R]カーソル位置から順次置換(上書き)する。終了は[Esc][C]カーソル位置から行末までを削除後、文字を追加するモードに入る。入れ替える[.]最後の削除や挿入、追加、置換などを繰り返す[u]最後の編集操作をアンドゥする[U]現在行に対する編集操作をすべてアンドゥして元に戻す[/]<文字列>指定した文字列を含むコマンド履歴行を探す[?]<文字列>指定した文字列を含むコマンド履歴行を、逆方向に探すviスタイルの場合に利用可能なキー割り当て(主要なもののみ)viはいちいち挿入モードにしないと文字入力ができないなど、モード切り替えがやや面倒である。その代わり、通常の英記号キーなどをほとんど全てコマンドに割り当てることができるため、例えばカーソル移動機能などはとても豊富である。bashのhistory(ヒストリ)機能を使うbashのコマンド履歴機能は、もともとはcshに実装されていたhistory機能に由来している。この機能を使うと「!」修飾子を使って履歴を呼び出したり、編集・再実行したりできる。履歴の一覧を表示させるには「history」コマンドを実行する。すると、今までに実行したコマンドの一覧が番号付きで表示される。[arg...]ヒストリ一覧を表示または操作します。行番号をつけてヒストリを表示します。操作した各項目には前に`*'が付きます。個の項目のみを表示します。ヒストリ一覧から全ての項目を削除します。番目のヒストリ項目を削除します。現在のヒストリをヒストリファイルに書き込みます。vi......(以下省略)......直前に実行したコマンドをそのまま再実行するには「!!」([↑]キーを押して[Enter]するのと同じ)、特定の番号のコマンドを再実行するには「!123」のようにコマンド履歴の番号を指定すればよい。呼び出されて実行されたコマンドは、また履歴の最後に追加される。指定したコマンド履歴を再実行するのではなく、単に履歴リストの最後に追加するだけなら「!!:p」のようにする。すると!!でまたすぐに呼び出せるし、再編集する場合も便利である。直前のコマンドなら[↑]キー1回で呼び出せるし、「^hello^Hello」のような置換機能も使えるからだ。以下にhistory機能で利用可能なコマンド履歴の指定方法を示しておく。以上のような方法でコマンド履歴を参照し、さらに次のような置換指定や修飾子を付けることによって、コマンド列の一部を修正したり、コマンド履歴中の引数を使って新しいコマンドを合成したりできる。以下のコマンド履歴の編集例を示しておく。見つかりませんでした。set......(以下省略)......コマンド履歴の管理コマンド履歴に記録されているコマンド列は、bashの終了時にユーザーのホームディレクトリにある~/.bash_historyファイルなどに保存される。コマンド履歴を幾つ保存するか、どのファイルに保存するかなどは、HISTOFILEやHISTFILESIZE変数などにセットされている。......保存するコマンド履歴の数user01@DESKTOP-5TV2I57:~$今回はbashを使う上で基本となるコマンドラインの編集方法や履歴の利用方法について見てきた。CUIやLinuxなどを使うというなら、bashの操作は避けて通れないだろう。次回からはbash(Linux)の基本的な使い方について解説する。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。