シェルの CUI では、キーボードでコマンドを入力します。 キーボードでキーをタイプするのにはそれなりの力が必要で、長時間タイプし 続けると、指が疲れてきます。間違って、タイプミス(typo51)してしまうことも あるでしょう。コマンド名やファイル名がうろ覚えで、思い出せないことも多い はずです。この節では、シェルでキータイプの数をできるだけ減らして同じことをさせる 方法や、typo をできるだけしないコマンドやファイル入力の方法を説明 します。これらを知っているかどうかで、シェルの作業効率は大幅に違います。
長いコマンドや多くの引数をもつコマンドを打ち込んだのに、1文字だけ typo
したために、エラーになってしまうことは、よくあります。そんな時、また、そ
のコマンドを最初からタイプしないといけないとしたら、その精神的打撃は計り
しれません(大袈裟か:)。コマンドヒストリとは、以前にコマンドラインに入力
したコマンドを再利用する方法です。シェルは、以前に入力されたコマンドを覚
えています。それを呼び出すには、上カーソルキー(
)または Ctrl
+ p を使います。呼び出されたコマンドは、カーソルキーなどを使って、再編集
できます(コマンドライン編集)。コマンドライン編集時の主なキーバインドを
示します。これらは、ほとんど §3.1節で説明する emacs のキーバ
インドと共通です。
| 前の行へ | |
|
|
次の行へ |
|
|
カーソルを左に |
|
|
カーソルを右に |
| 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 も参照して下さい。