(Pour info: ce sont les séquences normales générées par ces touches sur la plupart des terminaux, c'est à un terminal ou à un programme / bibliothèque de les interpréter. Vous pouvez le montrer sur un terminal de travail en appuyant sur Ctrl+ vpuis sur Endou sur une autre touche sans caractère, où ctrl-V définit la touche suivante à traiter littéralement.)
Il semble que votre sqlite3binaire n'utilise pas readline, ou que la configuration de la ligne de lecture ( inputrc) soit cassée (moins probable si cela bashfonctionne bien).
Vous pourrez peut-être confirmer / refuser si la ligne de lecture est utilisée avec ce qui suit, remplacez-le which sqlite3par le chemin complet s'il n'est pas dans votre PATH.
ldd `which sqlite3`
Si vous voyez libreadline.soou similaire, cela devrait fonctionner, alors vérifiez votre INPUTRCvariable d'environnement, ~/.inputrcet /etc/inputrc. Il y a une faible chance qu'il soit lié statiquement ( libreadline.a), pour vérifier essayer:
strings -a `which sqlite3`| grep -i inputrc
Si les chaînes INPUTRC, ~/.inputrcou /etc/inputrcsont présentes, il semble que readline était liée statiquement, et devrait fonctionner.
(Au mieux, vous ne pouvez obtenir que des versions de base et compiler des informations ( pragma compile_options, si elles sont prises en charge) sqlite3, mais pas l'ensemble complet des fonctionnalités, c'est pourquoi nous devons aller fouiller le binaire.)
Si ni lddni stringsindiquer readline, il est presque certain que le binaire n'a pas de support.
Sinon, vérifiez cette réponse: SQLite avec prise en charge de la ligne de lecture sur Ubuntu
Si vous n'avez pas de prise en charge de lecture en ligne dans votre sqlite3binaire, vous pouvez l' encapsuler en utilisant l'un des éléments suivants:
rlwrap sqlite3
socat READLINE EXEC:"sqlite3"
Les deux vous permettent de spécifier un fichier d'historique sur la ligne de commande.
Vous pouvez également vérifier vos bashfixations readline, juste pour vous assurer que readline fonctionne et configuré comme prévu:
bind -p | egrep '\[[ABCD3].?":'
Sur mon système (fonctionnant bash-3.xdans un rxvt), j'obtiens:
"\M-[3~": delete-char
"\M-[D": backward-char
"\M-[C": forward-char
"\M-[B": next-history
"\M-[A": previous-history
\Mest "meta", ce qui équivaut à escape , donc là où vous voyez " \M-" a " \e" devrait aussi fonctionner. Lors de l'impression, escape est représenté par ^[(control- [).