Quelques notes sur la STTY
commande 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 stty
commande.
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' A
envoi par le terminal est considéré comme un a
. Cela signifie que ce, je peux maintenant taper LS
sur mon VT50, et la coquille lirai à ls
partir /dev/ttyX
. Je peux aussi maintenant exécuter la stty
commande.
- Maintenant, avec
IUCLC
seul et terminal echo
, pendant que je tape LS
, le pilote ls
renvoie 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 A
en tapant \A
, et en sortie, une majuscule A
est rendue sous la forme \A
. (celui-là n'est pas implémenté sous Linux)
La stty
commande a les correspondants iuclc
, olcuc
et les xcase
paramètres et un alias pour les trois: lcase
. Le paramètre par défaut et ce que vous obtenez après stty sane
est lcase
dé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 STTY
commande comme alias pour stty
, et c'est pourquoi les stty
supports LCASE
comme alias pour lcase
.
Il n'y a pas d' SANE
alias de ce type car vous ne voulez pas le faire stty sane
lorsque votre terminal est tout en majuscules.
Si vous exécutez stty lcase
ou stty olcuc
par erreur sur un terminal normal (essayez-le xterm
ou tout autre terminal moderne), c'est là que vous devez entrer stty sane
pour revenir à la normale. Mais vous n'avez pas besoin d'une STTY
commande 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 sane
commande qui sera exécutée.
Ceux iuclc
-ci olcuc
, les xcase
drapeaux é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.