Algunas notas sobre el STTYcomando histórico para aclarar algunas imprecisiones en la otra respuesta y comentarios asociados :
Los terminales anteriores como el DEC VT05 o VT50 y las teleimpresoras anteriores solo admitían caracteres en mayúsculas. Lo que eso significa es que no se puede ingresar ningún carácter en minúsculas o que no podrían mostrar ninguna otra letra que las mayúsculas.
Unix distingue entre mayúsculas y minúsculas y la mayoría de los comandos son minúsculas, puede ver que hay un problema allí. Es por eso que hay modos termio / termios especiales (y que todavía están allí en los Unices modernos a pesar de que esos terminales ya no existen) para manejarlos.
termio / termios son respectivamente las interfaces más antiguas y más nuevas para controlar el controlador tty en Unix. En un término (s) ioctl, especifica entradas, salidas, indicadores de control ... que especifican cómo las señales eléctricas en una línea en serie se deben manejar en caracteres de entrada y salida y el comportamiento interno del controlador wrt cosas como eco, el editor de línea ... La mayoría de ellos se aplican a terminales virtuales como las modernas consolas Unix VGA o pseudo terminales.
La interfaz de línea de comando termio(s)es el sttycomando.
Para manejar los terminales de mayúsculas, hay tres termio(s)banderas involucradas:
IUCLC(Ingresar mayúsculas a minúsculas): los caracteres entrantes se convierten a minúsculas cuando se ingresan. Eso significa que el Aenviado por el terminal se considera como a a. Eso significa que con este, yo ahora puedo escribir LSen mi VT50, y la cáscara a leer lsa partir /dev/ttyX. Ahora también puedo ejecutar el sttycomando.
- Ahora, con
IUCLCsolo y terminal echo, mientras escribo LS, el controlador enviaría de lsvuelta al terminal (para que yo pueda ver lo que escribo) que no puede mostrar, por lo que también necesitamos OLCUC(Salida minúscula a mayúscula), eso es necesitamos convertir cualquier letra minúscula a mayúscula antes de enviarla a la terminal.
- Ahora, podemos operar Unix desde un VT50, pero ¿qué pasa si queremos ingresar caracteres en mayúsculas ahora? Ahí es donde entra la bandera
xcase local . Esto permite (solo en modo de entrada canónica) enviar una mayúscula Aescribiendo \A, y en la salida, una mayúscula Ase representa como \A. (ese no está implementado en Linux)
El sttycomando dispone de los correspondientes iuclc, olcucy xcaselos ajustes y un alias para los tres: lcase. La configuración predeterminada y lo que obtienes después stty saneestá lcasedesactivado.
Entonces, cuando estás en un VT50, todo lo que necesitas hacer es ejecutar:
stty lcase
para poder hacer cualquier cosa. Pero espera, ¿cómo haces eso cuando solo puedes enviar letras mayúsculas? Ahí es donde necesita un STTYcomando como alias stty, y es por eso que sttyadmite LCASEcomo alias para lcase.
No existe ese SANEalias porque no desea hacerlo stty sanecuando su terminal está en mayúsculas.
Si ejecuta stty lcaseo stty olcucpor error en un terminal normal (pruébelo xtermo en cualquier terminal moderno), allí es donde debe ingresar stty sanepara volver a la normalidad. Pero no necesitas un STTYcomando para eso. Si escribe stty sane, que se ve STTY SANEhecho eco de vuelta, pero eso es sólo el texto que se muestra (no a la orden introducida) que se han traducido, que sigue siendo el stty sanecomando que se ejecutará.
Aquellos iuclc, olcuc, xcasebanderas solía ser especificado por POSIX (y probablemente por eso se implementa en Linux, aunque tengo serias dudas de alguien alguna vez conectado cualquiera de esas viejas terminales a un sistema Linux (que no sean para la diversión)), pero se han eliminado en POSIX: 2001.