Did a cat / dev / urandom - Terminal cassé

31

Par curiosité, lorsque votre jeu de caractères shell ne fonctionne plus, y a-t cat /dev/urandom-il un moyen de résoudre ce problème?

Pedro Montoto García
la source
6
Bien sûr ... ne fais pas ça! De plus, si vous pensez qu'une commande peut produire des caractères non valides, utilisez cat -A.
jnylen
2
De plus, j'ai toujours été curieux de savoir comment catbriser votre jeu de caractères ...
crasic
cat / bin / ls corrige souvent cela (
je
2
@crasic: il envoie des binaires au terminal, et chaque terminal a des moyens de changer la police / couleur / etc en recevant des caractères spéciaux. Voir le merveilleux: linusakesson.net/programming/tty (aka "le TTY démystifié). En fonction de votre paramètre TERM, il réagira différemment aussi (et bien sûr, en fonction des octets qu'il reçoit et dans quel ordre).
Olivier Dulac
@skarface: vous avez probablement eu de la chance que le binaire de / bin / ls ait, vers la fin, des séquences d'octets qui fixaient l'affichage. Cela dépendra du système d'exploitation, du binaire (c'est-à-dire quelle version, quelle compilation optino utilisée, etc.) et du paramètre TERM de votre terminal ... je vous recommande donc fortement d'utiliser "stty sane" à la place ^^
Olivier Dulac

Réponses:

50

Essayez l'une de celles-ci:

stty sane

ou

reset

Si les deux ne fonctionnent pas ou si votre terminal est tellement foiré que vous ne pouvez même pas entrer de commandes, il est préférable de fermer le terminal et d'en démarrer un nouveau.

Notez que stty saneest défini par POSIX alors qu'il resetne l'est pas. Cela signifie que sur certains systèmes, il pourrait ne pas y en avoir resetou cela pourrait faire quelque chose de complètement différent, comme la réinitialisation de l'ensemble du système. Je n'ai pas encore rencontré de système sans reset.

Pour plus d'informations, lisez le chapitre " Le Linux et la console HOWTO du clavier" "Réinitialiser votre terminal" .

lesmana
la source
Je vous ai donné la bonne réponse parce que vous étiez le premier. Désolé pour les autres.
Pedro Montoto García
En général, il est peu probable que l'écriture d'octets aléatoires dans un terminal le place dans une situation qui nécessite une correction saine; qui est plus susceptible de provenir d'un plantage du programme.
Random832
stty saneest le moyen sûr et approprié (je suis fatigué de "réinitialiser" pour les raisons que j'ai énoncées dans les commentaires sous la réponse de lain)
Olivier Dulac
1
@OlivierDulac Merci de partager votre expérience. J'ai recherché et appris que ce resetn'est pas défini par POSIX.
lesmana
1
@Iain, je ne pense pas que @OlivierDulac diffuse du FUD. La référence qui resetn'est pas "sûre" est le fait qu'elle n'est pas définie par POSIX. Veuillez arrêter de diffuser le FUD que @OlivierDulac diffuse du FUD.
lesmana
20

Vous pouvez essayer d'utiliser la commande reset .

user9517 prend en charge GoFundMonica
la source
4
Vous avez lié la page de manuel, recommandant implicitement un bon RTFM. Tu es mon héros aujourd'hui, merci.
Luke404
Cela fonctionne sur de nombreux Unix ... Mais un mot d'avertissement: attention: sur certains systèmes (c.-à-d., D'autres systèmes d'exploitation, ou peut-être une autre distribution de Linux?), Cela pourrait déclencher une réinitialisation du système (je crois par exemple certaines versions de solaris). Par conséquent, réinitialiser le système, c'est-à-dire forcer un redémarrage (sans arrêt correct) ... Comme pour toute commande, soyez prudent. (Cela est également vrai pour d'autres commandes: certains 'tar' par exemple ne suppriment PAS les préfixes "/" et peuvent donc écraser les fichiers sensibles, etc. Assurez-vous toujours de savoir comment la commande que vous avez l'intention d'utiliser fonctionne sur le système que vous utilisent.)
Olivier Dulac
1
@OlivierDulac; L'OP a tagué sa question linux donc il a obtenu une réponse linuxcentrique bien qu'il fonctionnera sans problème sur d'autres systèmes unix, y compris Solaris. J'ai travaillé avec Solaris pendant 15 ans! Vous confondez la commande de réinitialisation SPARC Open Boot Prom avec la commande userland reset (1). Si vous effectuez la réinitialisation à l'invite ok, il est peu probable que vous récupériez à partir d'un terminal corrompu.
user9517 prend en charge GoFundMonica
@lain: ah, ça pourrait être ça (Open Boot prom), en effet. Mais tout de même, cela signifie que dans certains environnements, "reset" est lié à la réinitialisation de l'hôte, donc je préfère que les gens (même s'ils sont "principalement" sur linux) apprennent / utilisent la commande "safe" "stty sane" (qui indique ce que il le fait, et n'est pas aussi ambigu que "reset") ... c'est pourquoi j'avertis les lecteurs à ce sujet.
Olivier Dulac
@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD tous les liens réinitialisés à tset - veuillez fournir des preuves de votre désinformation autre que votre mauvais souvenir de quelque chose. OBP n'est pas un OS hôte donc il ne compte pas.
user9517 prend en charge GoFundMonica
11

La resetcommande devrait fonctionner.

Changaco
la source