Spodziewam się, że dostanę trochę uwagi, ale nigdzie nie mogę znaleźć odpowiedzi. Wydaje się, że powinno to być takie oczywiste. Czasami, wpisz złe polecenie w terminalu bash, kursor po prostu przeskakuje do następnej linii bez żadnego błędu lub czegokolwiek. Nie mogę powiedzieć, co zrobiłem źle. To tak, jakbym utknął w programie. Rekonstrukcja:
$ tidy
Ja: „Ups! Nie o to mi chodziło…”
:q
Ja: „To nie” nie zadziałało … „
:exit :quit exit quit /exit /quit -exit -quit -wtf???
Wiem, że schrzaniłem sprawę, ale jak mogę wrócić do monitu bez zamykania terminala?
Komentarze
Odpowiedź
Zawsze możesz wypróbować oczywiste rzeczy, takie jak ^C
, ^D
(eof), Escape itp., Ale jeśli wszystko zawiedzie, zwykle kończy się zawieszanie polecenie z ^Z
(Control-Z), które przenosi mnie z powrotem do powłoki.
Następnie wykonuję polecenie ps
i zapisuję PID (identyfikator procesu) polecenia, a następnie wydaję kill thePID
(kill -9 thePID
jeśli poprzednie nie działało) polecenie zakończenia aplikacji.
Zauważ, że nie jest to uporządkowany ( bez słów) sposób na zamknięcie aplikacji / polecenia i istnieje ryzyko, że prawdopodobnie nie będziesz zapisywać niektórych danych itp.
Przykład (użyłem tidy
ale nie mam go zainstalowanego):
$ 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
Komentarze
- To ' tak !! ^ Z na ratunek. Dziękuję bardzo.
- ^ \ (ctrl-backslash, SIGQUIT) działa w niektórych upartych narzędziach, które nie ' nie odpowiadaj ^ C.
- Ćśś! Nie ' nie mów ludziom o ^ \ lub ' ll start
SIG_IGN
' to też, co wtedy zrobimy? - @godlygeek Can you powiedz mi, co oznacza %% w Linuksie lub co to jest? Dużo szukałem.
- @Noumenon, spójrz na
LESS='+/^JOB CONTROL' man bash
.%%
odnosi się do " aktualnej pracy ".
Odpowiedz
Spróbuj nacisnąć Ctrl – D lub Ctrl – C . Jeśli to się nie powiedzie, zakończ proces.
Próbując z tidy
poleceniem, o którym wspomniałeś, Ctrl – D działa.
Komentarze
-
CTRL+C
jest również dobre dla Windows CMD.
Odpowiedź
Innym rozwiązaniem (jeszcze niewymienionym) jest wysłanie sygnału SIGQUIT
używając ctrl + \
Jest silniejszy niż ctrl + c
Odpowiedź
CTRL + D == exit shell command
i
CTRL + C == terminate the current process, Of course may be the given software handle it and
CTRL + D doens"t work
Oczywiście generują kernel signal
jeśli chcesz dowiedzieć się więcej, przeczytaj:
man 7 signal
Komentarze
- Ctrl + D to koniec pliku, a nie bezpośrednie wyjście.
:q
faktycznie działało dla mnie; czy nie ' t to polecenie Vima?