Comando `tty` no Linux: Descubra a história e o poder de 3 letras!

Qual a função do comando tty? Essencialmente, ele exibe o nome do terminal que você está utilizando. A sigla TTY significa “teletipo”. Mas qual a história por trás desse nome? Vamos mergulhar um pouco mais fundo.

As Teleimpressoras do Século XIX

Nas décadas de 1830 e 1840, surgiram máquinas conhecidas como teleimpressoras. Essas engenhocas permitiam o envio de mensagens digitadas “pelo fio” para locais remotos. O remetente digitava a mensagem em um teclado, e ela era impressa em papel no destino. Elas representaram um avanço na telegrafia, que antes se baseava no Código Morse e outros sistemas similares.

As mensagens eram codificadas e transmitidas, e depois recebidas, decodificadas e impressas. Diversas técnicas foram usadas para codificar e decodificar as mensagens. Um dos mais notáveis e prolíficos foi patenteado em 1874 por Émile Baudot, cujo nome batizou a taxa de transmissão. Seu esquema de codificação de caracteres antecedeu o ASCII em 89 anos.

A codificação de Baudot se tornou o padrão mais próximo na codificação de teleimpressoras e foi adotada pela maioria dos fabricantes. O design original do hardware de Baudot possuía apenas cinco teclas, semelhantes às de um piano. O operador precisava aprender uma combinação específica de teclas para cada letra. Eventualmente, o sistema de codificação de Baudot foi adaptado a um layout de teclado convencional.

Para celebrar este progresso, as máquinas foram chamadas de teletipoaspiradoras. Isso foi abreviado para teletipos e, finalmente, para TTYs. Assim surgiu o acrônimo TTY, mas o que a telegrafia tem a ver com computação?

ASCII e Telex

Quando o ASCII surgiu em 1963, ele foi prontamente adotado pelos fabricantes de teleimpressoras. Apesar do advento e do uso disseminado do telefone, os teletipos continuavam populares.

Telex era uma rede global de teleimpressoras que permitia o envio de mensagens escritas por todo o mundo. Eles foram o principal meio de transmissão de mensagens escritas no período após a Segunda Guerra Mundial até o boom da máquina de fax na década de 1980.

Enquanto isso, os computadores também estavam evoluindo. Eles estavam se tornando capazes de interagir com os usuários em tempo real e suportar múltiplos usuários. O antigo método de processamento em lote se tornou obsoleto. As pessoas não queriam esperar 24 horas ou mais pelos resultados. A prática de criar pilhas de cartões perfurados e aguardar os resultados durante a noite já não era aceitável.

As pessoas precisavam de um dispositivo que lhes permitisse inserir instruções e receber os resultados. Eficiência era a palavra de ordem.

O Teletipo Reutilizado

O teletipo surgiu como o candidato ideal como dispositivo de entrada/saída. Afinal, ele foi projetado para permitir que mensagens fossem digitadas, codificadas, enviadas, recebidas, decodificadas e impressas.

Para o teletipo, não importava se o dispositivo na outra ponta da conexão não era outro teletipo. Contanto que ele “falasse” a mesma linguagem de codificação e fosse capaz de receber e enviar mensagens de volta, o teletipo funcionava perfeitamente.

E, claro, ele utilizava um teclado quase padrão.

Teletipos Emulados por Hardware

Os teletipos se tornaram o método padrão de interação com os grandes mini e mainframes da época.

Com o tempo, eles foram substituídos por dispositivos que emulavam as máquinas eletromecânicas usando eletrônica. Estes usavam Tubos de Raios Catódicos (CRTs) em vez de rolos de papel. Eles não tremiam ao exibir as respostas do computador. Eles também permitiam funcionalidades antes impossíveis, como mover o cursor pela tela, limpar a tela, colocar o texto em negrito e assim por diante.

O DEC VT05 foi um dos primeiros exemplos de teletipo virtual e um ancestral do famoso DEC VT100. Milhões de DEC VT100s foram vendidos.

Teletipos Emulados por Software

No ambiente de desktop do Linux e outros sistemas operacionais similares ao Unix, como o macOS, a janela do terminal e aplicativos como x-term e Konsole são exemplos de teletipos virtuais. Mas eles são emulados inteiramente por software. São chamados de pseudo-teletipos. Isso foi abreviado para PTS.

E é aí que o tty entra em cena.

O que o tty Pode Nos Dizer?

No Linux, existe um multiplexador de pseudo-teletipo que controla as conexões de todos os pseudo-teletipos de janela de terminal (PTS). O multiplexador é o mestre e os PTS são os escravos. O kernel se comunica com o multiplexador através do arquivo de dispositivo localizado em /dev/ptmx.

O comando tty exibirá o nome do arquivo de dispositivo que seu pseudo-teletipo escravo está utilizando para se comunicar com o mestre. E esse é, efetivamente, o número de sua janela de terminal.

Vamos ver o que o tty reporta para a nossa janela de terminal:

tty

A resposta indica que estamos conectados ao arquivo de dispositivo em /dev/pts/0.

Nossa janela de terminal, que é uma emulação de software de um teletipo (TTY), se comunica com o multiplexador de pseudo-teletipo como um pseudo-teletipo (PTS). E, neste caso, ele é o número zero.

A Opção Silenciosa

A opção -s (silenciosa) faz com que o tty não produza nenhuma saída.

tty -s

No entanto, ele produz um valor de saída:

0: se a entrada padrão vier de um dispositivo TTY, emulado ou físico.
1: se a entrada padrão não vier de um dispositivo TTY.
2: Erro de sintaxe, parâmetros de linha de comando incorretos foram utilizados.
3: Ocorreu um erro de gravação.

Isso é muito útil em scripts Bash. Mas, mesmo na linha de comando, podemos demonstrar como executar um comando somente se você estiver em uma janela de terminal (uma sessão TTY ou PTS).

tty -s && echo "In a tty"

Como estamos em uma sessão TTY, nosso código de saída é 0 e o segundo comando é executado.

O que os Comandos Revelam

Outros comandos podem revelar o seu número TTY. O comando who lista informações de todos os usuários conectados, incluindo você.

Alec e Mary estão conectados remotamente ao computador Linux. Eles estão conectados aos PTS um e dois.

O usuário dave está conectado a “:0”.

Isso representa a tela e o teclado fisicamente conectados ao computador. Mesmo que a tela e o teclado sejam dispositivos de hardware, eles ainda estão conectados ao multiplexador por meio de um arquivo de dispositivo. O tty revela que é /dev/pts/2.

who
tty

Acessando um TTY

Você pode acessar uma sessão TTY em tela inteira mantendo pressionadas as teclas Ctrl + Alt e pressionando uma das teclas de função.

Ctrl + Alt + F3 abrirá o prompt de login do tty3.

Se você fizer login e digitar o comando tty, verá que está conectado a /dev/tty3.

Este não é um pseudo-teletipo (emulado por software); é um teletipo virtual (emulado por hardware). Ele está utilizando a tela e o teclado conectados ao seu computador para simular um teletipo virtual, assim como o DEC VT100 costumava fazer.

Você pode usar as teclas de função Ctrl + Alt com as teclas de função F3 a F6 e ter quatro sessões TTY abertas, se desejar. Por exemplo, você pode estar logado no tty3 e pressionar Ctrl + Alt + F6 para ir ao tty6.

Para voltar ao ambiente gráfico da área de trabalho, pressione Ctrl + Alt + F2.

Pressionar Ctrl + Alt + F1 o levará de volta ao prompt de login da sessão da área de trabalho gráfica.

Antigamente, Ctrl + Alt + F1 até Ctrl + Alt + F6 abriam os consoles TTY de tela inteira, e Ctrl + Alt + F7 o levava de volta ao ambiente gráfico. Em distribuições Linux mais antigas, o comportamento era assim.

Este teste foi realizado em versões atuais do Manjaro, Ubuntu e Fedora, e todos se comportaram da seguinte forma:

Ctrl + Alt + F1: Retorna à tela de login do ambiente gráfico da área de trabalho.
Ctrl + Alt + F2: Retorna ao ambiente gráfico da área de trabalho.
Ctrl + Alt + F3: Abre o TTY 3.
Ctrl + Alt + F4: Abre o TTY 4.
Ctrl + Alt + F5: Abre o TTY 5.
Ctrl + Alt + F6: Abre o TTY 6.

O acesso a esses consoles de tela inteira permite que pessoas que utilizam instalações Linux exclusivamente pela linha de comando – e muitos servidores Linux são configurados dessa maneira – tenham vários consoles disponíveis.

Já aconteceu de você estar trabalhando em uma máquina Linux com ambiente de área de trabalho gráfico e a sessão travar? Agora você pode ir para uma das sessões do console TTY para tentar corrigir a situação.

Você pode usar o top e o ps para tentar identificar o aplicativo com falha e, em seguida, usar kill para encerrá-lo, ou simplesmente usar shutdown para tentar desligar o sistema da maneira mais normal possível, considerando o estado do computador.

Três Letras com Muita História

O comando tty, cujo nome deriva de um dispositivo do final dos anos 1800, surgiu no Unix em 1971 e faz parte do Linux e de sistemas operacionais similares até hoje.

Essa pequena ferramenta tem uma história e tanto.