Am făcut o greșeală scriind o comandă la promptul de comandă SQLite, pe care acum vreau să o anulez, așa arată linia mea de comandă

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

În acest caz, probabil pentru că am deschis o ofertă, nu pot nici măcar să lovesc ENTER pentru a rula comanda. I obține doar o continuare a liniei, care ar fi totuși mai puțin decât ideală, deoarece ar trebui să rulez un cod greșit și o cauză și o eroare, doar pentru a recâștiga controlul promptului.
Cum pot anula linia / comanda și a fi returnat înapoi la o solicitare?

Comentarii

  • Poate ^ D va închide stdin pentru sqlite și îl va face să iasă …
  • @Ralph ctrl D face ca sqlite să iasă din întreaga sesiune, inclusiv să piardă orice din bazele de date de memorie – dacă aveți nevoie să rulați vreuna.

Răspuns

Interfața sqlite3 folosește biblioteca ReadLine pentru editarea liniei de comandă. Puteți șterge o linie completă h Ctrl + U , dar după ce ați apăsat Enter , linia a fost acceptată și nu mai poate fi modificată.

După cum ați = „ad4edeaba9″>

observat , trimiterea Ctrl + D va solicita clientului să iasă, ceea ce nu este ceea ce doriți.

Cel mai bun pariu este să

  1. să închidă orice șir și apoi,
  2. înainte de a emite un ; final, să genereze o eroare de sintaxă deliberată.

În exemplul dvs.:

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

Acest lucru vă va asigura că nu se execută nimic și vă va lăsa în sesiunea SQLite cu orice tabel temporar intact.

Comentarii

  • mulțumesc, da, m-am gândit că ar putea fi cea mai bună soluție
  • Dacă ați apăsat introduceți după o tastă săgeată, adică aveți ceva de genul > ^[[A și apoi ...>, atunci trebuie să închideți parantezele pentru a anula: > ]];. Ar trebui să sprijine într-adevăr Ctrl + C pentru acest lucru. ' este urât în acest fel.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *