GNU/Linux >> Znalost Linux >  >> Linux

Proč `cat /dev/urandom` rozbije váš terminál?

Zatímco existují vaše normální, tisknutelné znaky ASCII, které se posílají tam a zpět na terminálu, existuje také mnoho netisknutelných znaků, které se používají pro komunikaci systému s terminálem. Pokud například program odešle znak 0x07 ("ASCII Bell znak"), měl by váš terminál pípnout.

Další speciální sekvence lze použít ke změně barvy zobrazeného textu, směru zobrazení, názvu okna, velikosti okna atd., a mnoho dalších věcí.

Když vy

cat /dev/urandom

Do vašeho terminálu se vysype hromada náhodných znaků a terminál nedokáže rozpoznat, že se nejedná o skutečné řídicí kódy.

Protože program efektivně posílá terminálu náhodné příkazy, terminál skončí v náhodném, často nepoužitelném stavu.


Některé z náhodných výstupů budou únikové kódy ANSI (http://en.wikipedia.org/wiki/ANSI_escape_code), které mohou dělat zábavné věci, jako je skrytí kurzoru nebo výběr alternativních písem. Další možností jsou sekvence unicode:Náhodný bytestream nebude platný UTF-8 a pravděpodobně ne všechny terminály s podporou unicode to zvládnou elegantně.


Linux
  1. Kdy použít /dev/random vs /dev/urandom?

  2. Proč Linux uvádí jednotky NVMe jako /dev/nvme0 namísto /dev/sda?

  3. Proč zápis do /dev/random neurychluje paralelní čtení z /dev/random?

  1. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  2. echo nebo print /dev/stdin /dev/stdout /dev/stderr

  3. Proč jsou < nebo > vyžadovány pro použití /dev/tcp

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  3. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?