Quelques notes sur la STTYcommande historique pour clarifier certaines inexactitudes dans l' autre réponse et commentaires associés :
Les terminaux antérieurs comme le DEC VT05 ou VT50 et les téléimprimeurs avant cela ne supportaient que les caractères majuscules. Cela signifiait qu'aucun caractère minuscule ne pourrait jamais être entré de leur part ou qu'ils ne pourraient pas afficher d'autre lettre que les majuscules.
Unix étant sensible à la casse et la plupart des commandes étant en minuscules, vous pouvez voir qu'il y a un problème. C'est pourquoi il existe des modes termio / termios spéciaux (et qui existent toujours dans les Unices modernes, même si ces terminaux ont disparu depuis longtemps) pour les gérer.
termio / termios sont respectivement les interfaces les plus anciennes et les plus récentes pour contrôler le pilote tty sous Unix. Dans une ou plusieurs termio (s) ioctl, vous spécifiez des drapeaux d'entrée, de sortie, de contrôle ... qui spécifient comment les signaux électriques sur une ligne série doivent être traités en caractères d'entrée et de sortie et le comportement interne du pilote par rapport à l'écho, le éditeur de ligne ... La plupart d'entre eux s'appliquent aux terminaux virtuels comme les consoles VGA Unix modernes ou les pseudo terminaux.
L'interface de ligne de commande pour termio(s)est la sttycommande.
Pour gérer les terminaux en majuscules, trois termio(s)indicateurs sont impliqués:
IUCLC(Entrée majuscules en minuscules): les caractères entrants sont convertis en minuscules lors de la saisie. Cela signifie que l' Aenvoi par le terminal est considéré comme un a. Cela signifie que ce, je peux maintenant taper LSsur mon VT50, et la coquille lirai à lspartir /dev/ttyX. Je peux aussi maintenant exécuter la sttycommande.
- Maintenant, avec
IUCLCseul et terminal echo, pendant que je tape LS, le pilote lsrenvoie au terminal (pour que je puisse voir ce que je tape) qu'il ne peut pas afficher, nous avons donc également besoin de OLCUC(Output Lower Case to Upper Case), c'est-à-dire nous devons convertir toute lettre minuscule en majuscule avant de l'envoyer au terminal.
- Maintenant, nous pouvons utiliser Unix à partir d'un VT50, mais que se passe-t-il si nous voulons saisir des caractères majuscules maintenant? C'est là que le drapeau
xcase local entre en jeu. Cela permet (en mode d'entrée canonique uniquement) d'envoyer une majuscule Aen tapant \A, et en sortie, une majuscule Aest rendue sous la forme \A. (celui-là n'est pas implémenté sous Linux)
La sttycommande a les correspondants iuclc, olcucet les xcaseparamètres et un alias pour les trois: lcase. Le paramètre par défaut et ce que vous obtenez après stty saneest lcasedésactivé.
Ainsi, lorsque vous êtes sur un VT50, il vous suffit de lancer:
stty lcase
pour pouvoir faire n'importe quoi. Mais attendez, comment faites-vous cela lorsque vous ne pouvez envoyer que des lettres majuscules? C'est là que vous avez besoin d'une STTYcommande comme alias pour stty, et c'est pourquoi les sttysupports LCASEcomme alias pour lcase.
Il n'y a pas d' SANEalias de ce type car vous ne voulez pas le faire stty sanelorsque votre terminal est tout en majuscules.
Si vous exécutez stty lcaseou stty olcucpar erreur sur un terminal normal (essayez-le xtermou tout autre terminal moderne), c'est là que vous devez entrer stty sanepour revenir à la normale. Mais vous n'avez pas besoin d'une STTYcommande pour cela. Si vous tapez stty sane, vous allez voyez en STTY SANEécho, mais c'est seulement le texte affiché (la commande entrée) qui ont été traduits, il est toujours la stty sanecommande qui sera exécutée.
Ceux iuclc-ci olcuc, les xcasedrapeaux étaient spécifiés par POSIX (et c'est probablement pourquoi il est implémenté sur Linux même si je doute sérieusement que quiconque ait jamais connecté l'un de ces anciens terminaux à un système Linux (autre que pour le plaisir)), mais ont été supprimés dans POSIX: 2001.