Did a cat / dev / urandom - Terminale rotto


31

Per curiosità, quando il tuo set di caratteri shell si interrompe facendo qualcosa del genere cat /dev/urandomc'è un modo per sistemarlo?


6
Certo ... non farlo! Inoltre, se pensi che un comando possa produrre caratteri non validi, usa cat -A.
jnylen,

2
Inoltre, sono sempre stato curioso di sapere come catpuò rompere il tuo set di personaggi ...
crasic

cat / bin / ls spesso risolve questo problema (non so perché)
skarface,

2
@crasic: invia binario al terminale, e ogni terminale ha modi per cambiare carattere / colore / ecc. ricevendo caratteri speciali. Guarda il meraviglioso: linusakesson.net/programming/tty (alias "demistificato TTY). A seconda dell'impostazione TERM, reagirà anche in modo diverso (e ovviamente, a seconda di quali byte riceve e in quale ordine).
Olivier Dulac

@skarface: probabilmente sei stato fortunato che il binario di / bin / ls avesse, quasi alla fine, sequenze di byte che riparavano il display. Dipenderà dal sistema operativo, dal binario (ad es. Quale versione, quale compilazione optino utilizzata, ecc.) E dall'impostazione TERM del tuo terminale ... quindi ti consiglio vivamente di usare "stty sane" invece ^^
Olivier Dulac

Risposte:


50

Prova uno di questi:

stty sane

o

reset

Se entrambi non funzionano, o il tuo terminale è così incasinato che non puoi nemmeno inserire comandi, allora è meglio chiudere il terminale e avviarne uno nuovo.

Si noti che stty saneè definito da POSIX mentre resetnon lo è. Ciò significa che su alcuni sistemi potrebbe non esserci un reseto potrebbe fare qualcosa di completamente diverso, come ripristinare l'intero sistema. Non ho ancora incontrato un sistema senza reset.

Per ulteriori informazioni di base, leggere il capitolo "Ripristino del terminale" nel capitolo " La tastiera e la console Linux HOWTO " .


Ti ho dato la risposta giusta perché tu eri il primo. Mi dispiace per gli altri.
Pedro Montoto García,

In generale, è improbabile che la scrittura di byte casuali su un terminale lo metta in una situazione che ha bisogno di una soluzione sana da risolvere; è più probabile che provenga da un arresto anomalo del programma.
Casuale 832,

stty saneè il modo sicuro e corretto (sono stanco di "resettare" per i motivi che ho dichiarato nei commenti sotto la risposta di Lain)
Olivier Dulac,

1
@OlivierDulac Grazie per aver condiviso la tua esperienza. Ho studiato e imparato che resetnon è definito da POSIX.
lesmana,

1
@Iain non penso che @OlivierDulac stia diffondendo FUD. Il riferimento che resetnon è "sicuro" è il fatto che non è definito da POSIX. Si prega di interrompere la diffusione del FUD che @OlivierDulac sta diffondendo il FUD.
Lesmana

20

Puoi provare a usare il comando reset .


4
Hai collegato la pagina man, raccomandando implicitamente un buon RTFM. Sei il mio eroe oggi, grazie.
Luke404,

Funziona su molti unix ... Ma qualche avvertimento: fai attenzione: su alcuni sistemi (ad esempio, altri sistemi operativi o forse qualche altra distribuzione di Linux?) Questo potrebbe iniziare un ripristino del sistema (credo, ad esempio, su alcune versioni di solaris). Pertanto reimpostare il sistema, ovvero forzare un riavvio (senza l'arresto corretto) ... Come per qualsiasi comando, fare attenzione. (Questo vale anche per altri comandi: alcuni 'tar', ad esempio, NON rimuovono i prefissi "/" e quindi possono sovrascrivere i file sensibili, ecc. Assicurati sempre di sapere come il comando che intendi utilizzare funziona sul sistema stanno usando.)
Olivier Dulac il

1
@OlivierDulac; L'OP ha taggato la sua domanda linux in modo da ottenere una risposta linuxcentrica anche se funzionerà su altri sistemi unix incluso Solaris senza problemi. Ho lavorato con Solaris per 15 anni! Stai confondendo il comando SPARC Open Boot Prom reset con il comando userland reset (1). Se si esegue il ripristino al prompt ok, è improbabile che si stia ripristinando da un terminale danneggiato.
user9517 supporta GoFundMonica il

@lain: ah, potrebbe essere questo (Open Boot prom), anzi. Tuttavia, ciò significa che in alcuni ambienti "reset" è collegato al ripristino dell'host, quindi preferisco che le persone (anche se sono "principalmente" su Linux) ad apprendere / utilizzare il comando "sicuro" "stty sane" (che afferma cosa lo fa, e non è così ambiguo come "reset") ... ecco perché sto avvisando i lettori di questo.
Olivier Dulac il

@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD reimpostati tutti i collegamenti su tset - fornisci prove della tua disinformazione diversa da qualcosa che non ricorda. OBP non è un sistema operativo host, quindi non conta.
user9517 supporta GoFundMonica il

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.