Ich erwarte etwas Flak dafür, aber ich kann die Antwort nirgendwo finden. Es scheint, als sollte es so offensichtlich sein. Manchmal, wenn ich Wenn Sie einen fehlerhaften Befehl in ein Bash-Terminal eingeben, springt der Cursor ohne Fehler oder irgendetwas in die nächste Zeile. Ich kann nicht sagen, was ich falsch gemacht habe. Es ist, als ob ich im Programm stecke. Nachstellung:

$ tidy 

Ich: „Ups! Das wollte ich nicht eingeben …“

:q 

Ich: „Das hat nicht funktioniert …“

:exit :quit exit quit /exit /quit -exit -quit -wtf??? 

Ich weiß, dass ich es vermasselt habe, aber wie komme ich zurück? zur Eingabeaufforderung, ohne das Terminal zu schließen?

Kommentare

Antwort

Sie können immer die offensichtlichen Dinge wie ^C, ^D (eof), Escape usw. ausprobieren, aber wenn alles fehlschlägt, werde ich normalerweise suspendiert der Befehl mit ^Z (Control-Z), der mich zurück in die Shell bringt.

Ich führe dann einen ps -Befehl aus, notiere die PID (Prozess-ID) des Befehls und gebe dann eine kill thePID (kill -9 thePID, wenn der erstere nicht funktioniert hat) Befehl zum Beenden der Anwendung.

Beachten Sie, dass dies kein ordentliches ist ( Kein Wortspiel beabsichtigt), um die Anwendung / den Befehl zu beenden, und Sie laufen Gefahr, möglicherweise keine Daten usw. zu speichern.

Ein Beispiel (ich hätte tidy aber ich habe es nicht installiert):

$ gnuplot G N U P L O T Version 4.2 patchlevel 6 .... Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot> Terminal type set to "wxt" gnuplot> gnuplot> ##### typed ^Z here [1]+ Stopped gnuplot $ ps PID TTY TIME CMD 1681 pts/1 00:00:00 tcsh 1690 pts/1 00:00:00 bash 1708 pts/1 00:00:00 gnuplot 1709 pts/1 00:00:00 ps $ kill 1708 ###### didn"t kill the command as ps shows $ ps PID TTY TIME CMD 1681 pts/1 00:00:00 tcsh 1690 pts/1 00:00:00 bash 1708 pts/1 00:00:00 gnuplot 1710 pts/1 00:00:00 ps $ kill -9 1708 ### -9 did the trick $ [1]+ Killed gnuplot $ ps PID TTY TIME CMD 1681 pts/1 00:00:00 tcsh 1690 pts/1 00:00:00 bash 1711 pts/1 00:00:00 ps 

Kommentare

  • Diese ' ist es !! ^ Z zur Rettung. Vielen Dank.
  • ^ \ (Strg-Backslash, SIGQUIT) funktioniert in einigen hartnäckigen Dienstprogrammen, die keine ' antworte nicht auf ^ C.
  • Shh! ' erzähle den Leuten nichts über das ^ \ oder sie ' wird SIG_IGN ' starten, was werden wir dann tun?
  • @godlygeek Kannst du? Sag mir, was %% unter Linux bedeutet oder was es ist. Ich habe viel gesucht.
  • @Noumenon, schauen Sie sich LESS='+/^JOB CONTROL' man bash an. %% bezieht sich auf den " aktuellen Job ".

Antwort

Drücken Sie Strg D oder Strg C . Wenn dies fehlschlägt, beenden Sie den Prozess.

Versuchen Sie es mit dem von Ihnen erwähnten Befehl tidy, Strg D funktioniert.

Kommentare

  • CTRL+C ist auch für Windows CMD geeignet.

Antwort

Eine andere Lösung (noch nicht erwähnt) besteht darin, das Signal SIGQUIT zu senden Verwenden von Strg + \

Es ist stärker als ein Strg + c

Antwort

STRG + D == exit shell command

und

STRG + C == terminate the current process, Of course may be the given software handle it and STRG + D doens"t work

Natürlich erzeugen sie eine kernel signal Wenn Sie mehr wissen möchten, lesen Sie:

man 7 signal 

Kommentare

  • Strg + D ist das Dateiende und nicht direkt beendet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.