잘못된 bash 명령을 종료하거나 취소하는 방법은 무엇입니까?

잘못된 bash 명령을 종료하거나 취소하는 방법은 무엇입니까?

나는 이것이 비판을 받을 것이라고 예상했지만 어디에서도 대답을 찾을 수 없었습니다. 너무 분명해 보일 것입니다. 가끔 bash 터미널에 잘못된 명령을 입력하면 커서가 오류나 아무 것도 없이 다음 줄로 이동하는 경우가 있습니다. 나는 내가 뭘 잘못했는지 말할 수 없습니다. 마치 프로그램에 갇힌 것 같아요. 재연:

$ tidy

나: "앗! 이건 내가 입력하려던 게 아니었는데..."

:q

나: "그건 쓸데없는 짓이야..."

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

제가 실수했다는 건 알지만 터미널을 닫지 않고 어떻게 프롬프트로 돌아갈 수 있나요?

답변1

^C언제든지 ( eof), Escape 등과 같은 확실한 작업을 시도할 수 있지만 ^D다른 모든 방법이 실패하면 일반적으로 (Control-Z)를 사용하여 명령을 일시 중지하고 ^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

답변2

Ctrl- D또는 Ctrl- 를 눌러보세요 C. 실패하면 프로세스가 종료됩니다.

tidy언급한 명령을 사용해 보십시오 . Ctrl- D작동합니다.

답변3

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

이것은더 강하게ctrl+ 보다c

답변4

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

관련 정보