Wątek przeniesiony 2022-08-30 15:44 z Inżynieria oprogramowania przez Riddle.

Przerwanie czekania na koniec inputu w "cat"

0

Witam,

Uczę się obsługi BASH ale mam pewien problem, którego nie potrafię rozwiązać. Mianowicie, jak wpiszę jakieś złe/niepełne polecenie to nie mogę wyjść z trybu edycyjnego. Np. wpisuję polecenie "cat" bez dalszej części albo jak ustawiam nazwę użytkownika i popieprzę cudzysłów (otworzę " a zamknę ') to dalsza część wygląda tak:
$ cat
">"
">"
">"
(znak większości jest w cudzysłowie ponieważ jak go wpiszę bez, to ten tu edytor na forum widzi to jako cytat czy coś takiego i nie wyświetla samego "ptaszka" )

Nawet nie wiem, jak nazwać to to powyżej. Obejrzałem trochę materiałów i robię mini kurs i nigdzie nie ma opisanej tej sytuacji. A mnie to wk****wia, bo jedyny sposób, na poradzenie sobie z tym, jest wyłączyć basha na chama i włączyć jeszcze raz.
No i pytanie:
Co to jest? Jak sobie z tym radzić? Jak z tego wyjść?

5

cat bez argumentów przyjmuje standardowe wejście, i będzie czekał, aż dostanie EOF — który możesz nadać naciskając Ctrl+d:

$ cat
i tak
i tak
to wygląda
to wygląda
^d
$ 

Popróbuj sam.

Natomiast ogólnie jak coś popsujesz, możesz się posługiwać inną kombinacją klawiszy — Ctrl+c. Ta z kolei wysyła SIGINT, który informuje program, że chcesz, żeby się wyłączył. Prawie wszystkie się posłuchają.

A jak nie? To możesz otworzyć kolejny terminal i ubić złośliwy program ręcznie — killall nazwaprogramu wysyła SIGTERM, który jest jeszcze bardziej bezpośredni, ale wciąż go można złapać (więc program ma szansę posprzątać po sobie zanim się wyłączy). A jak i to nie pomaga? killall -9 nazwaprogramu wysyła SIGKILL. Tego już się nie da złapać — program, który go dostanie, jest wydziedziczany i nie ma nic do gadania.

0

Dokładnie o to mi chodziło. Bardzo dziękuję za dużą dozę informacji.

Serdecznie pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1