Subsections

2.3 入力の終わりとコマンドの強制終了

2.3.1 キーボードからの入力と入力の終わり -- CTRL-d

次の操作を試してみましょう。
  1. wc year を実行してください。
    wc はファイルのバイト数・単語数・行数を表示するコマンドです。
  2. 次に,引数無しに wc とだけ打って実行してみましょう。
    何も起きないどころかプロンプトも表示されません。
  3. ここで,キーボードから ls と打って,<ENTER> を押しましょう。
    プロンプトが表示されないままでコマンドを打っても,そのコマンドは実行されません。
  4. キーボードから I like you. と打ち込んで <ENTER> を押しましょう。
    まだ何も起こりませんね。
  5. 今度は Ctrl キーを押しながら d キーを押してください。 これからは CTRL キーを押しながら d キーを押すことを CTRL-d と表記します。
    wc の実行結果が出力され,プロンプトが現れました。wc は実行を終えました。

ファイル名を指定せずに wc を実行すると, wc はキーボードからの入力を処理します5。 2. においてプロンプトが表示されなかったのは, wc が実行中であり,キーボードからの入力を待っている状態だったからです。

4. で使った CTRL-d は「入力の終わり (正確には,ファイルの終り; EOF = End Of File)」を意味するキーです。 wc は CTRL-d が入力されたのでキーボードからの読み込みを終了し,実行結果を画面に出力しました6

なお,上の操作ではキーボードから 2 行 4 単語を入力しましたから, 行数と単語数に関しては wc は正しい結果を出力しています。 一方,文字数については,画面に表示されている入力文字数(空白文字を含む)より 2 文字分多いはずです。 これは,行末に入力した <ENTER> を,wc が文字として数えているからです。 実際,<ENTER> で入力したものは特殊な文字であって,通常の文字として表示 される代りに,画面上では改行として表示されているのです。

2.3.2 コマンドの強制終了 -- CTRL-c

CTRL-c はコマンドの実行を強制的に終了させる働きをします。 もし,先ほどの wc の実行例で CTRL-d の代わりに CTRL-c を押すと, wc は読み込みを完了する前に終わってしまいます。 したがって文字数等の出力は行われません。 両者の違いに注意しましょう。

コマンドを実行したけれど動作がおかしい,とか,プロンプトが戻るまでの時間が長すぎる,という場合には CTRL-c によるコマンドの終了を試してみるといいでしょう。 コマンド行でタイプミスをしてしまい,最初から打ち直したい場合にも,CTRL-c が使えます。 ただし,コマンドを正常終了できる場面では,正規の終了操作をすべきです。