Respostas:
Edite (ou crie) seu ~/.inputrcarquivo. Adicione uma linha dizendo
set echo-control-characters Off
Isso instruirá a biblioteca GNU Readline (que o Bash usa) a não enviar (ecoar) nenhum caractere de controle para a tela. A configuração estará ativa em todas as novas sessões do Bash posteriormente (e em qualquer outro utilitário que use a biblioteca Readline).
Observe que, se o seu sistema Unix vier com um arquivo de configuração de todo o sistema para a biblioteca Readline (geralmente /etc/inputrc), seu arquivo de configuração pessoal precisará incluir esse arquivo:
$include /etc/inputrc
set echo-control-characters Off
Outra alternativa é fazer uma cópia pessoal do arquivo de configuração em todo o sistema e modificá-lo.
sleep 180e pressione CTRL + C
~/.inputrcainda não existir, simplesmente criar o arquivo poderá perder algumas configurações existentes. No meu caso, notei que ctrl + left e ctrl + right haviam parado de funcionar. A solução era começar o meu ~/.inputrccom esta linha $include /etc/inputrc. Também é possível apenas cp /etc/inputrc .inputrceditar e editar conforme desejado.
Tente o seguinte:
stty -echoctl
Para uma explicação, veja este post excelente e detalhado de Stéphane Chazelas que também explica alguns outros sttyrecursos .
Se você deseja tornar essa alteração permanente (e você está usando bashcomo está implícito na sua pergunta), é melhor inseri-la.bashrc como observado por jlmg nos comentários (assim se aplica a todos os shells interativos).
.bash_profilecomo esse arquivo apenas é analisado por shells de login. Em .bashrcvez disso, deve ser inserido , para que seja lido por todas as chamadas interativas.
^[[A
stty -echotambém. É claro que isso também impedirá o eco de todo o resto, o que provavelmente torna essa resposta um impedimento, se tudo o que você queria era esconder os ^Cs.
^Cfoi sempre no final, posso concordar com você. Mas o ^Cserá impresso onde quer que esteja o cursor, que pode sobrescrever um par de caracteres em qualquer lugar do comando. Isso significa que, se você precisar copiar e colar partes desse comando, poderá acabar com algo mutilado. E isso ^Cnão é tão facilmente reconhecido quando se olha o terminal como teria sido se estivesse no final do comando.
Se você está tentando encontrar uma configuração que permita eco normal (incluindo echoctl) e apenas silencie o eco de caracteres geradores de sinal, e você tem certeza de que isso será possível porque você já viu isso funcionar dessa maneira antes ...
Você provavelmente já viu dessa maneira. Mas não é mais possível, por causa desse commit :
confirmar ec5b1157f8e819c72fc93aa6d2d5117c08cdc961
Ative eco INTR / QUIT / SUSP na disciplina de linha N_TTY (por exemplo, ctrl-C aparecerá como "^ C" se stty echoctl estiver definido e ctrl-C estiver definido como INTR).
O Linux parece ser o único sistema operacional semelhante ao Unix (recentemente eu verifiquei isso no Solaris, BSD e Mac OS X) que não se comporta dessa maneira, e eu realmente sinto falta disso como uma boa confirmação visual da interrupção de um programa no console ou no xterm. Lembro-me disso com carinho de muitos Unixs que usei ao longo dos anos também. Trazer isso para o Linux também parece ser uma boa maneira de torná-lo ainda mais compatível com o comportamento padrão do tipo unix.
Se você se lembrar com carinho de como o Linux não ecoava isso ^C, a única maneira de recuperar o comportamento antigo é corrigir o kernel. Nas versões recentes, o eco dos caracteres geradores de sinal está nas linhas 1215-1218 de drivers / tty / n_tty.c .
set echo-control-characters off