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


41

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

$ tidy

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

:q

나 : "그건 작동하지 않았다 ..."

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

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



:q실제로 저를 위해 일했습니다. Vim 명령 아닌가요?
The Red Pea

답변:


53

당신은 항상 ^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

8
그게 다야 !! ^ Z는 구조에. 정말 고맙습니다.
David Kennedy

3
^ \ (ctrl-backslash, SIGQUIT)는 ^ C에 응답하지 않는 완고한 유틸리티에서 작동합니다.
mrb

2
!! 사람들에게 ^ \에 대해 말하지 마십시오. 그렇지 않으면 사람들도 그렇게 시작할 SIG_IGN것입니다. 그러면 우리는 무엇을할까요?
Alan Curry

1
@godlygeek Linux에서 %%가 무엇을 의미하는지 또는 어떤 종류인지 알 수 있습니까? 많이 찾았습니다.
Noumenon

1
@Noumenon을 살펴보십시오 LESS='+/^JOB CONTROL' man bash. %%"현재 작업"을 나타냅니다.
와일드 카드

12

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

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


CTRL+CWindows CMD에도 좋습니다.
T.Todua

7

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

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


2

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

3
Ctrl + D는 파일 끝이며 직접 종료되지 않습니다.
Gilles 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.