Perché `cat / dev / urandom` rompe il tuo terminale?


Risposte:


21

Mentre ci sono i tuoi caratteri ASCII normali e stampabili che vengono inviati avanti e indietro su un terminale, ci sono anche molti caratteri non stampabili che vengono utilizzati dal sistema per comunicare con il terminale. Ad esempio, se un programma invia il carattere 0x07("ASCII Bell character"), il terminale dovrebbe emettere un segnale acustico.

Altre sequenze speciali possono essere utilizzate per modificare il colore del testo visualizzato, la direzione in cui viene visualizzato, il titolo della finestra, la dimensione della finestra, ecc., Tra molte altre cose.

Quando tu

cat /dev/urandom

Un sacco di personaggi casuali vengono scaricati sul tuo terminale e il terminale non può dire che non sono veri e propri codici di controllo.

Poiché il programma sta effettivamente inviando comandi casuali al terminale, il terminale finisce in uno stato casuale, spesso inutilizzabile.


4

Alcuni dei risultati casuali saranno i codici di escape ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ), che possono fare cose divertenti come nascondere il cursore o selezionare caratteri alternativi. Un'altra possibilità sono le sequenze Unicode: un bytestream casuale non sarà valido UTF-8, e probabilmente non tutti i terminali compatibili con Unicode lo gestiranno con grazia.


1

cat /dev/urandomti darà un flusso di byte casuali tra 0e 255, non tutti questi valori sono caratteri di testo validi. Poiché la finestra del terminale forniva dati non validi, non ci si sarebbe mai aspettati di gestirla, perché l'applicazione del terminale poteva essere "rotta".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.