[unix] 잘못된 bash 명령을 종료하거나 취소하려면 어떻게합니까?

나는 이것에 대해 약간의 단점을 얻을 것으로 기대하지만 어디서나 답을 찾을 수는 없다. 너무 분명한 것 같습니다. 때로는 bash 터미널에 잘못된 명령을 입력하면 커서가 오류 나 아무것도없이 다음 줄로 넘어갑니다. 내가 뭘 잘못했는지 알 수 없습니다. 프로그램에 갇혀있는 것 같습니다. 재연 :

$ tidy

나 : “죄송합니다. 내가 입력하려는 것이 아닙니다 …”

:q

나 : “그건 작동하지 않았다 …”

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

내가 망했다는 것을 알고 있지만 터미널을 닫지 않고 프롬프트로 돌아가려면 어떻게해야합니까?



답변

당신은 항상 ^C, ^D(eof), Escape 등과 같은 명백한 것들을 시도 할 수 있지만, 모든 것이 실패하면 일반적으로 ^Z(Control-Z)로 명령을 일시 중단 시켜 쉘로 돌아갑니다.

그런 다음 ps명령 을 수행하고 명령의 PID (프로세스 ID)를 확인한 다음 kill thePID( kill -9 thePID이전이 작동하지 않은 경우) 명령을 실행하여 응용 프로그램을 종료하십시오.

이것은 응용 프로그램 / 명령을 종료 하는 깔끔한 방법이 아니며 데이터를 저장하지 않을 위험이 있습니다.

예 (사용 tidy했지만 설치하지 않았습니다) :

$ 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


답변

CtrlD또는 Ctrl-를 눌러보십시오 C. 실패하면 프로세스를 종료하십시오.

과 노력 tidy당신이 언급 한 명령 CtrlD작동합니다.


답변

아직 언급되지 않은 또 다른 해결책은 +를 SIGQUIT사용 하여 신호 를 보내는 것입니다.ctrl\

그것은이다 강한 (A)보다 ctrl+c


답변

CTRL+D == exit shell command

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

물론 kernel signal더 알고 싶다면 다음을 읽으십시오.

man 7 signal


답변