Isso não é tão fácil quanto parece mudar. Está relacionado ao terminal cozido vs. modo cru e se o eco está ativado ou não.
Quando o terminal está no modo cozido (o padrão), o kernel lê tudo o que entra e o processa usando recursos de edição de linha rudimentares que incluem o eco do texto normal imediatamente, processando o apagamento e eliminando caracteres que apagam um único caractere e toda a linha atual, respectivamente, e algumas outras coisas. Linhas de texto só aparecem na entrada do terminal quando você pressiona enter. Durante todo o tempo até que você pressione enter, tudo acontece inteiramente dentro do kernel e nenhum processo em execução no terminal recebe um único byte , portanto, o aplicativo de primeiro plano nem sabe que o usuário está no processo de digitação de qualquer coisa. Um processo em execução no tty não pode suprimir esse eco, mesmo que ele queira apenas porque o eco viria em um momento inoportuno (por exemplo, misturado com a saída), porque esse processo nem mesmo está ciente de que a entrada está acontecendo.
Você pode configurar o terminal para o modo raw sem echo para suprimir isso ( stty raw
, ou com termios), mas você perde completamente as capacidades de edição de linha do kernel - o que significa, por exemplo, que você não pode corrigir um erro de digitação. pressionando Ctrl - u e iniciando novamente. Mais importante, você terá muita dificuldade em usar qualquer programa que dependa do processamento cozido do kernel (basicamente qualquer coisa que não use readline ou ncurses) porque você estará digitando completamente cego em tais programas! Ah, e também: sem o processamento finalizado do terminal você perde a interceptação do kernel dos atalhos de controle de trabalho para interromper e suspender (por padrão Ctrl - c e Ctrl - z respectivamente).