Uma coisa que me incomoda usando o terminal do Linux é quando eu tenho que digitar uma senha invisível, como quando você executa o ssh . Às vezes, digito errado uma ou mais letras e preciso pressionar a tecla Backspace algumas vezes para ter certeza de que apaguei tudo para começar de novo.
Eu sei que isso não é grande coisa, mas como no outro dia eu descobri que pressionar CTRL + L "limpa" o terminal, eu queria saber se há uma maneira de limpar / apagar a senha invisível sem depender do backspace ou pressionar a tecla Enter para tente novamente.
Eu sei que isso já foi respondido, mas a resposta não explica o que está acontecendo.
Caracteres como Ctrl+ Lsão tratados pelo aplicativo . No caso de inserir entrada no shell, como
bash
, limpa a tela. Alguns aplicativos, comoemacs
, usam-no para redesenhar a tela e / ou mais recente o cursor.Caracteres como Ctrl+ Uem um prompt de senha são tratados pela disciplina de linha TTY . Eles funcionam sempre que o terminal de entrada estiver no modo de edição de linha "canônico", que é o modo em que seus programas estão enquanto você digita uma senha. Nesse modo, é o próprio kernel do Linux que interpreta esses caracteres. Você pode ver quais funções estão atribuídas a quais teclas na saída de
stty -a
:Aqui, você pode ver que Ctrl+ Uestá vinculado a
kill
, que (de acordo com a página do manual stty ) "apagará a linha atual". Você também pode usarstty
para alterar este mapeamento:Esta página possui muitas informações excelentes sobre a camada TTY, se você estiver interessado.
Se as coisas não fossem confusas o suficiente: quando no prompt de um interativo
bash
, na verdade você não está no modo de edição de linha "canônico". Em vez disso,bash
está recebendo cada caractere diretamente enquanto você o digita e interpretando as próprias seqüências de controle, através da biblioteca readline . Esta biblioteca vai honrar os mapeamentos que você definiu no seu dispositivo terminal, embora, assim você ainda pode usarstty
para mudá-los. Ou, você pode personalizá-los independentemente dentrobash
e em outros programas baseados em linha de leitura, definindo aunix-line-discard
propriedade dentro do seu~/.inputrc
arquivo. Veja a página de manual do bash para mais informações.Quando você executa um programa,
bash
reativa o modo de edição de linha canônica (stty icanon
) se ele estava ativado anteriormente e o desativa novamente quando o programa termina (stty -icanon
).fonte