Algumas notas sobre o STTYcomando histórico para esclarecer algumas imprecisões na outra resposta e nos comentários associados :
Os terminais anteriores, como o DEC VT05 ou VT50 e as tele - impressoras anteriores, eram compatíveis apenas com caracteres maiúsculos. O que isso significava é que nenhum caractere minúsculo poderia ser inserido a partir deles ou que eles não seriam capazes de exibir nenhuma outra letra além das maiúsculas.
Como o Unix faz distinção entre maiúsculas e minúsculas e a maioria dos comandos é minúscula, você pode ver que há um problema lá. É por isso que existem modos especiais termio / termios (e que ainda existem nos Unices modernos, mesmo que esses terminais tenham se esgotado há muito tempo) para lidar com eles.
termio / termios são respectivamente as interfaces mais antigas e mais recentes para controlar o driver tty no Unix. Em um (s) termo (s) ioctl, você especifica entrada, saída, sinalizadores de controle ... que especificam como os sinais elétricos em uma linha serial devem ser tratados nos caracteres de entrada e saída e o comportamento interno do driver em coisas como echo, the editor de linha ... A maioria deles se aplica a terminais virtuais, como modernos consoles VGA Unix ou pseudo terminais.
A interface da linha de comandos para termio(s)é astty comando
Para lidar com os terminais maiúsculos, há três termio(s)sinalizadores envolvidos:
IUCLC(Introduzir maiúsculas em minúsculas): os caracteres recebidos são convertidos em minúsculas quando são introduzidos. Isso significa que o Aenviado pelo terminal é considerado como a a. Isso significa que com este, eu posso agora escrever LSno meu VT50, eo shell vai ler lsa partir /dev/ttyX. Agora também posso executar o sttycomando
- Agora, com
IUCLCsozinho e terminal echo, enquanto digito LS, o driver envia de lsvolta para o terminal (para que eu possa ver o que digito) que ele não pode exibir, então também precisamos OLCUC(Saída em minúscula para maiúscula), ou seja precisamos converter qualquer letra minúscula em 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 (apenas no modo de entrada canônica) enviar uma maiúscula Adigitando \Ae, na saída, uma maiúscula Aé renderizada como \A. (aquele não está implementado no Linux)
O sttycomando tem os correspondentes iuclc, olcuce xcaseconfigurações e um alias para todos os três: lcase. A configuração padrão e o que você procura stty saneestão lcasedesativados.
Portanto, quando você está em um VT50, tudo o que você precisa fazer é executar:
stty lcase
ser capaz de fazer qualquer coisa. Mas espere, como você faz isso quando só pode enviar letras maiúsculas? É aí que você precisa de um STTYcomando como um alias para stty, e é por isso que sttysuporta LCASEcomo um alias para lcase.
Não existe um SANEpseudônimo porque você não deseja fazer isso stty sanequando o seu terminal está em maiúsculas.
Se você executar stty lcaseou stty olcucpor engano em um terminal normal (experimente xtermou em qualquer terminal moderno), é aí que você precisa entrar stty sanepara voltar ao normal. Mas você não precisa de um STTYcomando para isso. Se você digitar stty sane, você vai ver STTY SANEecoou de volta, mas isso é apenas o texto exibido (não o comando inserido) que foram traduzidos, ainda o éstty sane comando que será executado.
Aqueles iuclc, olcuc, xcasebandeiras costumava ser especificado por POSIX (e isso é provavelmente por isso que ele é implementado no Linux, embora eu duvido seriamente que alguém já conectado qualquer daqueles velhos terminais para um sistema Linux (exceto por diversão)), mas foram removidos em POSIX: 2001.