Se você trabalha com um terminal SSH ou semelhante já deve ter passado por uma situação parecida : após passar horas digitando em seu editor de texto predileto em modo gráfico você passa para o terminal e tenta salvar um arquivo no Vi apertando Ctrl + s. Pronto, terminal congelado…

Calma, não é um bug no shell ou no seu terminal. Ctrl + s significa “pare de ecoar qualquer coisa no terminal”.

Ctrl + s ecoa (invisivelmente) um caractere especial de controle de fluxo que interrompe tudo o que estava sendo mostrado na tela. Foi criado para você poder interromper telas que estivessem passando rápido demais para ler. Enquanto a tela está congelada, o Ctrl + s grava tudo o que for digitado no buffer do teclado porém não executa nada.

Para liberar o terminal de novo basta pressionar Ctrl + q

Lembre-se que tudo que for digitado durante o congelamento será ecoado após liberar o terminal.

Pode parecer óbvio, mas acontece: não digite nada que possa comprometê-lo(ou a integridade de sua estação de trabalho) enquanto o terminal estiver congelado.

O usuário “A. Clay Stephenson” deste fórum explica que Ctrl + s e Ctrl + q foram criados para protocolos seriais onde o handshake via hardware não existe. Assim, Ctrl + s emite o caractere 0×13 para avisar que o terminal serial não pode mais receber caracteres, e Ctrl + q emite 0×11 liberando a linha serial para envio.

Num terminal padrão do Linux você pode verificar todos os caracteres de comando especiais utilizando o comando:

[[email protected] ~]# stty -a

Referência adicional: Orientação para usuários de UNIX da Universidade de Stanford

Imagem em destaque: Bin im Garten