シェルの CUI では、キーボードでコマンドを入力します。 キーボードでキーをタイプするのにはそれなりの力が必要で、長時間タイプし 続けると、指が疲れてきます。間違って、タイプミス(typo51)してしまうことも あるでしょう。コマンド名やファイル名がうろ覚えで、思い出せないことも多い はずです。この節では、シェルでキータイプの数をできるだけ減らして同じことをさせる 方法や、typo をできるだけしないコマンドやファイル入力の方法を説明 します。これらを知っているかどうかで、シェルの作業効率は大幅に違います。
長いコマンドや多くの引数をもつコマンドを打ち込んだのに、1文字だけ typo したために、エラーになってしまうことは、よくあります。そんな時、また、そ のコマンドを最初からタイプしないといけないとしたら、その精神的打撃は計り しれません(大袈裟か:)。コマンドヒストリとは、以前にコマンドラインに入力 したコマンドを再利用する方法です。シェルは、以前に入力されたコマンドを覚 えています。それを呼び出すには、上カーソルキー()または Ctrl + p を使います。呼び出されたコマンドは、カーソルキーなどを使って、再編集 できます(コマンドライン編集)。コマンドライン編集時の主なキーバインドを 示します。これらは、ほとんど §3.1節で説明する emacs のキーバ インドと共通です。
または Ctrl + p | 前の行へ |
または Ctrl + n | 次の行へ |
または Ctrl + b | カーソルを左に |
または Ctrl + f | カーソルを右に |
Ctrl + a | カーソルを行頭へ |
Ctrl + e | カーソルを行末へ |
Ctrl + k | カーソル以降をカット |
Ctrl + y | カットしたものをペースト |
BS または Delete | カーソルの前の1文字を削除 |
return | コマンドの実行(カーソルはどこにあっても構わない) |
数回前に使ったコマンドなら、 キーで捜した方が簡単ですが、 数10回前に使ったコマンドまで キーでたどり着くのは大変です。 そんな時は、history コマンドが使えます。
% history 321 8:01 jman man ........ (中略) 352 15:30 history | wc -l 353 15:30 jman history 354 15:31 man tcsh 355 15:34 history %history の引数で番号を与えると、その行数だけの過去のコマンドを表示します 52。 過去に使ったコマンドは、「!番号」 または 「!文字列」で実行できます。後者の場合、 一番最近使ったその文字列から始まるコマンドを実行します。上の例だと、!m とコマンドラインに入力すると、man tcsh が実行されます。
コマンド名やファイル名がうろ覚えの時は、シェルの補完機能を使う と便利です。例えば、firefox を起動させる場合を例に説明します。
% fireTAB (fireとキー入力した後に、TABキーを押す) % firefox (自動的に firefox と補完される) % fiTAB (fiのあとで TAB を押しても、ビープ音が鳴り何も起こらない) (ここで、Ctrl + d を押す) fiascotopnm files findtr fixmacps fixwfwps fig2dev filetest finger fixmount fixwpps ... (途中省略) file2c findaffix fixfmps fixtpps % firTAB (r を追加してからTABで、firefoxまで補完される) % firefox (ここで、更に Ctrl + d を押すと、ふたつの候補が表示される) firefox firefox-config % firefox % set autolist (オートリストをセット) % fiTAB (TABを押しただけで、候補が自動的に表示される) fiascotopnm files findtr fixmacps fixwfwps fig2dev filetest finger fixmount fixwpps ... (以下省略)コマンドの入力の途中で TABキーを押すと、シェルはそれまで入力されたコマン ドの補完を試みます。すでに入力されている文字列の次の候補の文字がひとつし かなければ補完し、複数の候補がある場合にはそこまで到達してから補完をあ きらめます。そこで、Ctrl + d を押すと、候補の一覧を表示します53。set autolist と設定すると、TABを押しただ けで(候補が複数ある場合には)一覧を表示するようになります54。
コマンドの補完は、コマンドラインの最初の文字列についてのみ行われます。ス ペースが1つ以上はさんだ次の文字列については、シェルは、コマンドではなくファ イルまたはディレクトリであると仮定して、補完を試みます。
% ls TAB (ls のあとにスペースを1個入れてから、TABを押してみる) (set autolist されていない場合は、Ctrl + d を押す)あとは、コマンドの補完と同じです。
練習
1
シェル変数 autolist を set と unset して、コマンドやファイル名の補完の 動作が変わることを確かめましょう。シェル変数や set と unset については、 §2.3.4 も参照して下さい。