なぜ `cat / dev / urandom`がターミナルを破壊するのですか?


回答:


21

端末上で前後に送信される通常の印刷可能なASCII文字がありますが、システムが端末と通信するために使用される多くの印刷できない文字もあります。たとえば、プログラムが文字0x07(「ASCIIベル文字」)を送信する場合、端末はビープ音を鳴らします。

他の特別なシーケンスを使用して、表示されるテキストの色、表示される方向、ウィンドウのタイトル、ウィンドウのサイズなどを変更できます。

あなたが

cat /dev/urandom

ランダムな文字の束が端末にダンプされ、端末は実際の制御コードではないことを認識できません。

プログラムは事実上ランダムなコマンドを端末に送信しているため、端末はランダムで、多くの場合使用できない状態になります。


4

ランダム出力の一部はANSIエスケープコード(http://en.wikipedia.org/wiki/ANSI_escape_code)になります。これは、カーソルを非表示にしたり、代替フォントを選択したりといった楽しいことを実行できます。別の可能性としては、ユニコードシーケンスがあります。ランダムバイトストリームは有効なUTF-8ではなく、おそらくすべてのユニコード対応端末が適切に処理するわけではありません。


1

cat /dev/urandom間あなたのランダムなバイトのストリームを与える0255、すべてではないそれらの値のが有効なテキスト文字です。ターミナルウィンドウは無効なデータをフィードするため、それを処理することは想定されていなかったため、ターミナルアプリケーションが「壊れた」状態になる可能性がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.