Warum bricht cat / dev / urandom Ihr Terminal ab?

Antworten:

21

Während es Ihre normalen druckbaren ASCII-Zeichen gibt, die auf einem Terminal hin und her gesendet werden, gibt es auch viele nicht druckbare Zeichen, mit denen das System mit dem Terminal kommuniziert. Wenn beispielsweise ein Programm das Zeichen 0x07("ASCII-Bell-Zeichen") sendet , sollte Ihr Terminal einen Signalton abgeben.

Andere spezielle Sequenzen können verwendet werden, um unter anderem die Farbe des angezeigten Texts, die Richtung, den Titel des Fensters, die Größe des Fensters usw. zu ändern.

Wenn du

cat /dev/urandom

Ein Haufen zufälliger Zeichen wird auf Ihrem Terminal abgelegt, und das Terminal kann nicht erkennen, dass es sich nicht um echte Steuercodes handelt.

Da das Programm effektiv zufällige Befehle an das Terminal sendet, befindet sich das Terminal in einem zufälligen, häufig unbrauchbaren Zustand.

Darth Android
quelle
4

Einige der zufälligen Ausgaben sind ANSI-Escape-Codes ( http://en.wikipedia.org/wiki/ANSI_escape_code ), mit denen Sie unterhaltsame Dinge tun können, z. B. den Cursor ausblenden oder alternative Schriftarten auswählen. Eine andere Möglichkeit sind Unicode-Sequenzen: Ein zufälliger Bytestream ist nicht UTF-8-gültig, und wahrscheinlich werden nicht alle Unicode-fähigen Terminals dies ordnungsgemäß handhaben.

vbraun
quelle
1

cat /dev/urandomgibt Ihnen einen Strom von zufälligen Bytes zwischen 0und 255, nicht alle diese Werte sind gültige Textzeichen. Da im Terminalfenster ungültige Daten eingespeist wurden, wurde nie erwartet, dass die Terminalanwendung in einen "defekten" Zustand versetzt wird.

Scott Chamberlain
quelle