Por exemplo, o usuário digita foofoo\b\b\bbar
, pressiona enter e obtém uma var
igualdade foofoo\b\b\bbar
em vez de foobar
. Sim, o usuário perde o recurso de exclusão e precisa usar outro atalho para exclusão. Ou pelo menos o contrário: backspace normal (pressionando) dá a eles foobar
e algum modificador + tecla backspace dá a eles backspaces literais.
Existe uma maneira de ativar read
a aceitação de backspaces literais?
Você pode usar Ctrlvpara inserir um caractere literalmente:
O
^H
é Ctrlv Backspace(ou Ctrlv CtrlH, que deve ser o mesmo dependendo das configurações do terminal).Se você quiser permitir que o usuário digite
\b
(barra invertida-b) para um backspace, você pode substituí-lo após oread
:Se você deseja que o usuário seja capaz de pressionar backspace sem usar
Ctrl-V
, você pode desativar temporariamente o caractere de apagar do terminal. Você provavelmente precisará substituir^?
/\x7f
por^H
/\x08
depois.O backspace ainda imprime como
^?
, como comCtrl-V
.(Se, em vez disso, você quiser backspaces para remover caracteres na tela, mas ainda tiver o backspace e os caracteres removidos salvos, provavelmente terá que implementá-lo manualmente.)
Este script (no bash) aceitará qualquer caractere, exceto
incluindo todos os outros caracteres de controle:
Digite os backspaces como CTRL- H.
Substituir:
com:
Para realmente "ver" os valores de byte.