なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

アミール・レザ・リアヒ

コマンドを実行するdd if=/dev/random count=1 bs=32と、ランダムなジャンクバイナリデータが取得されますが、それらを受信した後も、プロセスの1;2c終了後も(いつものようにいくつかの文字が残っていddます。

[amirreza@localhost ~]$ dd if=/dev/random count=1 bs=32
¾¿܄ÌYLÔAëEÔr/f&-È<>ýø1+0 records in
1+0 records out
32 bytes copied, 3.5878e-05 s, 892 kB/s
^[[?1;2c[amirreza@localhost ~]$ 1;2c

このキャラクターとは何ddですか?また、終了後にスローされるのはなぜですか?

telcoM

これは、Linux / Unix GUIターミナルウィンドウが実際には単一の統合されたものではなく、多かれ少なかれ一緒に機能する3つのものであることを明らかにする状況の1つです。

  • ターミナルエミュレーター(実際のGUIターミナルアプリケーション、またはLinuxテキストコンソールの組み込みターミナルエミュレーター)
  • オペレーティングシステムのTTYまたはPTY(疑似TTY)デバイスドライバー
  • シェル、またはその時点でTTY入力を処理しているプログラム。

ランダムジャンクには、たまたま次のバイトシーケンスのいずれかが含まれていました:0x1b 0x63(= ESC c)または0x1b 0x30 0x63ESC0 c)。

これらのシーケンスは、従来のVT100端末と互換性のある端末または端末エミュレーターにとって特別な意味を持ちます。端末(/エミュレーター)に、端末の主要な属性を説明するコードで応答するように要求します。

端末は文字列ESC[?1:2c応答します。これは、「この端末はAdvanced VideoOptionを備えたVT100です」という意味で使用されていました。(これは応答でxtermあり、これと互換性のある他の多くの端末エミュレーターが通常送信します。)

この文字列は、入力した場合と同じように送信されますが、ddコマンドはキーボードを想定していないため、PTYドライバーは^[[?1;2c最初に、プロンプトの最初に表示されるように文字列をエコーバックします。(これ^[は、ESC制御文字を表す一般的な方法です。)

次に、ddコマンドが終了し、シェルはプロンプトを表示し、PTYドライバーの入力バッファーで待機している入力を確認し、それを読み取って解釈しようとします。

  • ESC[メタ-[として解釈されbashます。これはのデフォルトのメタキーストロークの1つではないため、何も実行されません。
  • また?、現時点では理解できない何らかの理由で除外されます(ご存知の場合は、この回答にコメントまたは編集してください)
  • 残りは、前のコマンドが完全に終了する前に入力を開始したコマンドの始まりである場合に備えて、プロンプトの後にシェルによって再表示されます。

ターミナルエミュレータにも影響を与える可能性のある他の制御シーケンスがいくつかあります。Xtermおよび互換性のあるターミナルエミュレーターが理解できる制御シーケンスのリストは、https//www.xfree86.org/current/ctlseqs.htmlで入手できます。

誤ってターミナルウィンドウにランダムなジャンクが表示され、ターミナルディスプレイがそれよりもひどく台無しになった場合(たとえば、ランダムデータに「文字セットの変更」コードが含まれているために文字が認識できなくなった場合)、その方法を学びたいと思うかもしれません。混乱したターミナルウィンドウを正常な状態にリセットします。いくつかの戦略があります:

  • GUIターミナルウィンドウを使用している場合は、「ターミナルのリセット」メニューオプションが含まれている場合があります。
  • 「デフォルトの文字セットに戻る」の制御コードは単純なControl+ o(数字ではなく文字O)なので、それを入力してEnterキーを押すと、次のプロンプトの見栄えが良くなるかどうかを確認できます。
  • コマンドプロンプトを表示しているように見えても文字が認識できない場合は、表示の問題であると考えて、やみくもにresetコマンドを入力してEnterキーを押すだけです。
  • テキストベースのフルスクリーンプログラム(=を使用するもの(n)curses)の場合、何らかの方法で混乱した場合に備えて、Control+L押して表示を完全に更新するように要求できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

分類Dev

/ dev / null 2>&1に2>&1が必要なのはなぜですか?

分類Dev

データセットerrnoの/ devソースから正常に読み取るのはなぜですか?

分類Dev

/ dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

分類Dev

/ dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

分類Dev

> / dev / null 2>&1が機能しないのはなぜですか?

分類Dev

/ dev / randomをバイトブロック単位で頻繁に読み取るのはなぜですか?

分類Dev

'' cat "$ {1:-/ dev / stdin} | ...&> / dev / null ''がbashで機能するのに、ダッシュでは機能しないのはなぜですか?

分類Dev

バイナリファイルからのこのストリームの読み取りが0x1A文字で停止するのはなぜですか?

分類Dev

/ dev / zeroからの読み取りがIO_RBYTESとしてカウントされないのはなぜですか?

分類Dev

/ dev / zeroからの読み取りがIO_RBYTESとしてカウントされないのはなぜですか?

分類Dev

ddを使用すると/ dev / randomが非常に遅いのはなぜですか?

分類Dev

/ devがいっぱいになるのはなぜですか?

分類Dev

フォルダから複数のHDF5ファイルを読み取れないのはなぜですか?その間、1つのHDF5ファイルを正常に読み取ることができます...(Python 3.7)

分類Dev

Linuxカーネルで/ devの下に追加のHDDが追加されているのはなぜですか?

分類Dev

while ループを使用して、ファイルから配列にデータを読み取ろうとしています。また、最初で唯一の値が -1 でないことを確認する必要があります

分類Dev

VSTSとGit:マスターにマージしているときにDEVブランチを押しつぶすと、DEVがマスターの後ろと前の両方にあると表示されるのはなぜですか?

分類Dev

SIメッセージソースから1つのファイルしか読み取れない/処理できないのはなぜですか?

分類Dev

System.inから一度に1文字ずつ読み取れないのはなぜですか?

分類Dev

OSXで/ dev / urandomからtrを読み取れないのはなぜですか?

分類Dev

なぜ✓記号が「1」に置き換えられることがあるのですか?

分類Dev

/ dev / shm /の内容が自動的に削除されるのはなぜですか

分類Dev

/ dev / shm /の内容が自動的に削除されるのはなぜですか

分類Dev

マウスカーソルが1つの要素にのみ表示されているのに、なぜすべての要素が使用されるのですか?

分類Dev

Spark:タスクが1人のワーカーにのみ割り当てられるのはなぜですか?

分類Dev

なぜ `cat / dev / null> / var / log / messages`になるのですか?

分類Dev

/ dev / urandomからのddが早く停止するのはなぜですか?

分類Dev

C ++で-1が-842150451になるのはなぜですか?

分類Dev

ループが.objファイルから1文字しか読み取らないのはなぜですか?

Related 関連記事

  1. 1

    なぜ `/ dev / random`から読み取ると、カーソルの後ろに` 1; 2c`文字が置かれるのですか?

  2. 2

    / dev / null 2>&1に2>&1が必要なのはなぜですか?

  3. 3

    データセットerrnoの/ devソースから正常に読み取るのはなぜですか?

  4. 4

    / dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

  5. 5

    / dev / randomに書き込むと、/ dev / randomからの並列読み取りが速くならないのはなぜですか?

  6. 6

    > / dev / null 2>&1が機能しないのはなぜですか?

  7. 7

    / dev / randomをバイトブロック単位で頻繁に読み取るのはなぜですか?

  8. 8

    '' cat "$ {1:-/ dev / stdin} | ...&> / dev / null ''がbashで機能するのに、ダッシュでは機能しないのはなぜですか?

  9. 9

    バイナリファイルからのこのストリームの読み取りが0x1A文字で停止するのはなぜですか?

  10. 10

    / dev / zeroからの読み取りがIO_RBYTESとしてカウントされないのはなぜですか?

  11. 11

    / dev / zeroからの読み取りがIO_RBYTESとしてカウントされないのはなぜですか?

  12. 12

    ddを使用すると/ dev / randomが非常に遅いのはなぜですか?

  13. 13

    / devがいっぱいになるのはなぜですか?

  14. 14

    フォルダから複数のHDF5ファイルを読み取れないのはなぜですか?その間、1つのHDF5ファイルを正常に読み取ることができます...(Python 3.7)

  15. 15

    Linuxカーネルで/ devの下に追加のHDDが追加されているのはなぜですか?

  16. 16

    while ループを使用して、ファイルから配列にデータを読み取ろうとしています。また、最初で唯一の値が -1 でないことを確認する必要があります

  17. 17

    VSTSとGit:マスターにマージしているときにDEVブランチを押しつぶすと、DEVがマスターの後ろと前の両方にあると表示されるのはなぜですか?

  18. 18

    SIメッセージソースから1つのファイルしか読み取れない/処理できないのはなぜですか?

  19. 19

    System.inから一度に1文字ずつ読み取れないのはなぜですか?

  20. 20

    OSXで/ dev / urandomからtrを読み取れないのはなぜですか?

  21. 21

    なぜ✓記号が「1」に置き換えられることがあるのですか?

  22. 22

    / dev / shm /の内容が自動的に削除されるのはなぜですか

  23. 23

    / dev / shm /の内容が自動的に削除されるのはなぜですか

  24. 24

    マウスカーソルが1つの要素にのみ表示されているのに、なぜすべての要素が使用されるのですか?

  25. 25

    Spark:タスクが1人のワーカーにのみ割り当てられるのはなぜですか?

  26. 26

    なぜ `cat / dev / null> / var / log / messages`になるのですか?

  27. 27

    / dev / urandomからのddが早く停止するのはなぜですか?

  28. 28

    C ++で-1が-842150451になるのはなぜですか?

  29. 29

    ループが.objファイルから1文字しか読み取らないのはなぜですか?

ホットタグ

アーカイブ