Jai fait une erreur en écrivant une commande à linvite de commande SQLite, que je veux maintenant abandonner, voici à quoi ressemble ma ligne de commande

sqlite> select * from todos" ...> " ...> ;^C 

Dans ce cas, probablement parce que jai ouvert un devis, je ne peux même « pas frapper ENTER pour exécuter la commande. I obtenir simplement une continuation de ligne, ce serait toujours loin dêtre idéal car je devrais exécuter un mauvais code et une cause et une erreur, juste pour reprendre le contrôle de linvite.
Comment puis-je annuler la ligne / commande et être renvoyé à une invite?

Commentaires

  • Peut-être que ^ D fermera stdin pour sqlite et le fera quitter …
  • @Ralph ctrl D oblige sqlite à quitter toute la session, y compris la perte de toutes les bases de données en mémoire – si vous devez en exécuter.

Réponse

Linterface sqlite3 utilise la bibliothèque ReadLine pour lédition de la ligne de commande. Vous pouvez effacer une ligne complète avec h Ctrl + U mais une fois que vous avez appuyé sur Entrée , la ligne a été acceptée et nest plus modifiable.

Comme vous avez remarqué , envoyer Ctrl + D invitera le client à quitter, ce qui nest pas ce que vous voulez.

Votre meilleur pari consiste à

  1. fermer nimporte quelle chaîne, puis,
  2. avant démettre un ; final, générer une erreur de syntaxe délibérée.

Dans votre exemple:

sqlite> select * from todos" ...> " ...> *** I made a mistake ...> ; Error: near "*": syntax error sqlite> 

Cela garantira que rien ne sera exécuté et vous laissera dans la session SQLite avec toutes les tables temporaires intactes.

Commentaires

  • merci, oui jai pensé que ce pourrait être la meilleure solution de contournement
  • Si vous avez appuyé sur entrez après une touche fléchée, cest-à-dire que vous avez quelque chose comme > ^[[A puis ...>, puis vous devez fermer les crochets pour annuler cela: > ]];. Il devrait vraiment prendre en charge Ctrl + C pour cela. Cela ' est odieux de cette façon.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *