web-dev-qa-db-ja.com

Linuxがテキストをシェルに貼り付けるときにバックスペースを許可するのはなぜですか?

私が遭遇する多くのLinuxディストリビューションでは、テキストをシェルに貼り付けるときにバックスペース文字が含まれています。これらの文字の貼り付けが妨げられないのはなぜですか?またはこの機能はいくつかの便利な機能を提供しますか?

言い換えると、Linuxシェルは、それが貼り付けられた文字列であるか、それとも手動で入力されたかを「認識」していますか?

この動作はどのように処理されますか?

3
Curcuma_

シェルは、端末で実行される単なるアプリケーションです。貼り付けの場合、emulatorsのみが関係しますが、「実際の」端末はまだあります(ヒント:Linuxコンソールはnotそれら)。

さまざまなコンソールの実装を無視すると、テキストの貼り付けはより限定された方法で行われるため、Xで実行されている端末が問題のポイントです。ターミナルエミュレータは、一連のeventsを単に見るだけです。入力したキーまたは貼り付けたテキストは、ターミナルエミュレータと同じように見えます。

ターミナルエミュレーター(およびそれらの間の選択/貼り付け)のみを考慮すると、選択/貼り付けはターミナルのウィンドウに表示されているもので機能するため、バックスペースは問題になりません。つまり、ユーザーが端末のウィンドウでテキストを選択した場合、印刷可能なテキストのみが表示されます(特殊なケースとしてタブ文字が含まれる場合があります)。バックスペースは、カーソルleftを移動するように端末に指示するため、(誰かがバグのある端末実装を持っていない限り)バックスペース文字はありません。 printable端末が選択で提供するために残された常駐はありません。 使用される可能性のある他の何百もの端末コントロール がありますが、バックスペースは単純で広く使用されています。

バックスペースは、ブラウザ(実際には印刷可能なテキストの表示を提供する必要があります...)などの実装が不十分なアプリケーションの問題であり、スクリプト作成者が画面に保存する必要があると判断したものはすべて保存されるようです。

だから...質問するのではなくターミナルエミュレータがまだBSを許可する理由、GUIブラウザがこの動作を許可する理由を尋ねるかもしれません。

8
Thomas Dickey