cat
以下を実行して、非常に単純なテキストエディタとして使用できますcat > foo.txt
。
次に、次のように入力します。
bar
baz
ctrl次に+を押すと、D次のようになります。
$ cat > foo.txt
bar
baz^D
カーソルを上に置きます^
。もう一度押すとファイルが保存されます。ただし、別のボタンを押すと(何もないかもしれませんが、ほとんどは何も押さない)、ファイルの編集を続けます。
これは正常な行動ですか?
答え1
はい。それはそれに関連しています^D
:それは単に現在のread(2)
通話を停止します。
プログラムがこれを行い、中間キーをint rdbytes = read(fd, buffer, sizeof buffer);
押すと、現在のバッファから読み取られたバイトが返され、そのバイト数が返されます。行が終了しても同じことが起こります。常に最後の行が渡されます。^D
read()
\n
したがって、returnは、^D
行の先頭または他の行の後にのみEOFを表す意図された効果を^D
持ちます。read()
0
答え2
はい、これは通常の動作です。単一の Control-D は通常、行の先頭でのみ中断されます。終了するにはCtrl-Dを押します。
$ cat > foo.txt
bar
baz
^D