端末に入力した文字はどこに保存されますか?

端末に入力した文字はどこに保存されますか?

xtermとbash 4.3を使用して(疑似)ターミナルpts / 10で入力します(█はカーソルです)。

test@debian:~$ ps
  PID TTY          TIME CMD
13128 pts/10   00:00:02 bash
21037 pts/10   00:00:00 ps
test@debian:~$ ls
Mail  directory  file
test@debian:~$ ls directory
file1  file2  file3
test@debian:~$ ls █

(ご覧のように、後ろにスペースがありますls。)

その後、他の端末からバックスペースキーを送信します。

test@debian:~$ echo -ne "\b" > /dev/pts/10

これで、ターミナルpts / 10には次のものがあります。

test@debian:~$ ls█

我々はdirectory以下の結果を得た。

test@debian:~$ lsdirectory█

Enterキーを押すと、「ディレクトリ」が表示されます。

file1  file2  file3
test@debian:~$ █

もちろん、一般的な入力ではlsdirectory「コマンドが見つかりません」というエラーが発生します。スペースがどこかに保存されました。どこ?

ベストアンサー1

シェルのコマンドラインエディタはスペースを節約します。実際には、コマンドラインを構成する文字のうち、入力したすべての文字が保存されます。

コマンドを実行する前に画面の内容をもう一度読んで、シェルがどのコマンドを実行するかを知っていると思うかどうか疑問に思います。しかし、実際にはそうではありません。さらに、端末は画面の内容を再度読み取る方法を必ずしも提供するわけではないので、シェルが望んでいてもそうすることができると期待できません。

さらに:同じ端末を同時に使用する複数のアプリケーションに注意する必要があります。この場合、シェルは端末でコマンドラインエディタを実行しており、他の場所で同じ端末にスペースをエコーし​​ます。あなたのシェルはあなたがこれを行ったことを全く知らず、カーソル位置のシェルの理解は画面上のカーソルの実際の位置と同期していません。これにより、コマンドラインを正しく表示するシェルの機能が混乱して破損する可能性があります。矢印キーやメニューベースのタブの完成などを使用してコマンドラインを編集する場合、シェルはカーソルを移動してコマンドラインの一部を再表示しようとしますが、カーソルが考える位置にないために間違いを犯します。である。

おすすめ記事