Jeg lavede en fejl ved at skrive en kommando ved SQLite-kommandoprompten, som jeg nu vil afbryde, sådan ser min kommandolinje ud

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

I dette tilfælde, sandsynligvis fordi jeg har åbnet et tilbud, kan jeg ikke engang ramme ENTER for at køre kommandoen. bare få en linjefortsættelse, det ville stadig være mindre end ideelt, fordi jeg skulle køre dårlig kode og årsag og fejl, bare for at genvinde kontrollen over prompten.
Hvordan kan jeg annullere linjen / kommandoen og komme tilbage til en prompt?

Kommentarer

  • Måske lukker ^ D stdin for sqlite og får det til at afslutte …
  • @Ralph ctrl D får sqlite til at afslutte hele sessionen, herunder at miste nogen i hukommelsesdatabaser – hvis du vil køre nogen.

Svar

sqlite3 interface bruger ReadLine-biblioteket til redigering af kommandolinjer. Du kan slette en fuld linje med h Ctrl + U men når du har trykket på Enter , er linjen accepteret og kan ikke længere redigeres.

Da du har bemærket , når du sender Ctrl + D , bliver klienten bedt om at afslutte, hvilket ikke er det, du vil have.

Din bedste chance er at

  1. lukke en hvilken som helst streng, og derefter,
  2. inden der udstedes en endelig ;, generere en bevidst syntaksfejl.

I dit eksempel:

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

Dette vil sikre, at intet bliver udført, og det vil efterlade dig i SQLite-sessionen med eventuelle midlertidige tabeller intakte.

Kommentarer

  • tak, ja, jeg troede, det kunne være den bedste løsning
  • Hvis du har trykket på indtast efter en piletast, dvs. du har noget som > ^[[A og derefter ...>, så skal du lukke parenteserne for at annullere det: > ]];. Det burde virkelig understøtte Ctrl + C til dette. Det ' er modbydeligt på denne måde.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *