(FYI: essas são as sequências normais geradas por essas chaves na maioria dos terminais, cabe a um terminal ou programa / biblioteca interpretá-las. Você pode mostrar isso em um terminal de trabalho pressionando Ctrl + v pressionando End ou outra tecla que não seja caractere, onde ctrl-V define o próximo pressionamento de tecla a ser tratado literalmente.
Parece que o seu binário sqlite3
não está usando readline
, ou a configuração da linha de leitura ( inputrc
) está quebrada (menos provável se bash
estiver funcionando corretamente).
Você pode confirmar / negar se a linha de leitura está sendo usada com o seguinte, substitua which sqlite3
pelo caminho completo, se não estiver em PATH
.
ldd 'which sqlite3'
Se você vir libreadline.so
ou similar, então deve funcionar, então verifique sua variável de ambiente INPUTRC
, ~/.inputrc
e /etc/inputrc
.
Existe uma chance slim que está estaticamente vinculada ( libreadline.a
), para verificar a tentativa:
strings -a 'which sqlite3'| grep -i inputrc
Se as strings INPUTRC
, ~/.inputrc
ou /etc/inputrc
estiverem presentes, parece que a readline foi estaticamente vinculada e deve funcionar.
(Na melhor das hipóteses você só pode obter alguma versão básica e compilar informações ( pragma compile_options
, se suportado) de sqlite3
, mas não o conjunto completo de recursos, e é por isso que precisamos cutucar o binário.)
Se nem ldd
nem strings
indicar readline, então é quase certo que o binário não tem suporte.
Caso contrário, verifique esta resposta: SQLite com suporte readline no Ubuntu
Se você não tem suporte à linha de leitura no seu sqlite3
binário, você pode encapsulá-lo usando um destes:
rlwrap sqlite3
socat READLINE EXEC:"sqlite3"
Ambos permitem que você especifique um arquivo de histórico na linha de comando.
Você também pode verificar suas ligações de linha de leitura bash
, apenas para garantir que a linha de leitura esteja funcionando e configurada como esperado:
bind -p | egrep '\[[ABCD3].?":'
No meu sistema (executando bash-3.x
dentro de um rxvt
) eu recebo:
"\M-[3~": delete-char
"\M-[D": backward-char
"\M-[C": forward-char
"\M-[B": next-history
"\M-[A": previous-history
\M
é "meta", o que equivale a escape , portanto, onde você vir " \M-
" a " \e
" também deve funcionar. Quando impresso, escape é representado como ^[
(control- [).