Algumas notas sobre o comando histórico STTY para esclarecer algumas imprecisões na outra resposta e comentários associados :
Terminais anteriores como o DEC VT05 ou VT50 e os teleimpressores antes disso apenas suportavam caracteres maiúsculos. O que isso significa é que nenhum caractere em letra minúscula jamais poderia ser inserido a partir deles ou que eles não seriam capazes de exibir qualquer outra letra que não os maiúsculos.
Com o Unix sendo sensível a maiúsculas e a maioria dos comandos sendo minúsculas, você pode ver que há um problema. É por isso que existem modos especiais termio / termios (e que ainda estão lá nos Unices modernos, mesmo que esses terminais tenham ido há muito tempo) para lidar com isso.
termio / termios são respectivamente as interfaces mais antigas e mais recentes para controlar o driver tty no Unix. Em um termio (s) ioctl , você especifica sinais de entrada, saída, controle ... que especificam como os sinais elétricos em uma linha serial devem ser manipulados em caracteres de entrada e saída e o comportamento interno do driver. echo, o editor de linhas ... A maioria deles se aplica a terminais virtuais, como os modernos consoles Unix VGA ou pseudo-terminais.
A interface da linha de comando para termio(s) é o comando stty .
Para manipular os terminais de maiúsculas, há três termio(s) de sinalizadores envolvidos:
-
IUCLC (Maiúsculas para minúsculas): os caracteres recebidos são convertidos para minúsculas quando são inseridos. Isso significa que o A enviado pelo terminal é considerado como a . Isso significa que, com isso ativado, posso digitar LS no meu VT50, e o shell lerá ls de /dev/ttyX . Eu também posso agora executar o comando stty .
- Agora, com
IUCLC sozinho e terminal echo , enquanto digito LS , o driver enviava ls de volta para o terminal (para que eu possa ver o que digito) que ele não pode exibir, então também precisamos de OLCUC (Minúscula de Saída para Maiúsculas), ou seja, precisamos converter qualquer letra minúscula para maiúscula antes de enviar para o terminal.
- Agora, podemos operar o Unix a partir de um VT50, mas e se quisermos inserir caracteres maiúsculos agora? É aí que entra o sinalizador
xcase local . Isso permite (somente no modo de entrada canônico) enviar uma maiúscula A digitando \A e, na saída, uma maiúscula A é processado como \A . (aquele não está implementado no Linux)
O comando stty tem as configurações iuclc , olcuc e xcase correspondentes e um alias para todos os três: lcase . A configuração padrão e o que você obtém depois de stty sane é lcase off.
Então, quando você está em um VT50, tudo que você precisa fazer é executar:
stty lcase
para poder fazer qualquer coisa. Mas espere, como você faz isso quando só pode enviar letras maiúsculas? É aí que você precisa de um comando STTY como um alias para stty , e é por isso que stty suporta LCASE como um alias para lcase .
Não existe tal SANE alias porque você não quer fazer stty sane quando seu terminal é todo em maiúsculas.
Se você executar stty lcase ou stty olcuc por engano em um terminal normal (experimente em xterm ou qualquer terminal moderno), é aí que você precisa inserir stty sane para voltar ao normal. Mas você não precisa de um comando STTY para isso. Se você digitar stty sane , irá ver STTY SANE retornado, mas esse é apenas o texto exibido (não o comando digitado) que terá sido traduzido, ainda é o comando stty sane que será ser executado.
Esses iuclc , olcuc , xcase flags costumavam ser especificados pelo POSIX (e é provavelmente por isso que ele é implementado no Linux, embora eu duvide seriamente que alguém já conectou qualquer um desses terminais antigos a um sistema Linux ( diferente de diversão)), mas foram removidos no POSIX: 2001.