Właściwie myślę, że odpowiedzi tutaj są lepsze, więc lepiej zaznacz jako dup w drugą stronę
ilkkachu
Odpowiedzi:
165
Często czasy, kiedy w terminalu Unix / Linux (bash) na przykład użyjesz polecenia morelub lessczy cataby wyświetlić plik. Gdy to zrobisz, a plik nie jest przeznaczony do przeglądania (np. /bin/ls), Otrzymasz wynik w następujący sposób:
Chodzi o to, że właśnie próbowałeś wyświetlić plik, który jest programem. Plik wykonywalny, który nie powinien być oglądany w standardowych przeglądarkach, jak wspomniałem powyżej.
metoda nr 1 - reset
Aby rozwiązać ten problem, możesz wykonać następujące czynności:
Kilkakrotnie naciśnij Control + C ( Ctrl+ C)
Wpisz polecenie reseti naciśnij klawisz Return
Zwykle powinno to przywrócić terminal do normalnego trybu. Wspomnę jeszcze o jednej rzeczy, gdy wykonasz powyższe kroki, wpisując je na ślepo w swoim terminalu. Upewnij się więc, że wpisujesz go poprawnie.
metoda nr 2 - stty przy zdrowych zmysłach
Jak sugerowano w komentarzach @sendmoreinfo, możesz mieć więcej szczęścia, używając następujących poleceń, jeśli powyższe nie działa:
$ stty sane
$ tput rs1
określanie typu pliku
Nawiasem mówiąc, jeśli natkniesz się na plik i nie jesteś pewien, czy to zepsuje twój terminal, możesz sprawdzić plik za pomocą polecenia, filektóre zgłosi typ pliku.
Na przykład z /bin/lstym plikiem pokazuje następujące dane wyjściowe:
resetnie jest w 100% lekarstwem na śmiertelne szaleństwo. Spróbuj, stty sanea następnie tput rs1.
sendmoreinfo
@sendmoreinfo - dzięki dodałem twoją sugestię do odpowiedzi. Użyłem, stty saneale nigdy tput.
slm
1
właściwie muszę to więcej zbadać. reset ma wysłać łańcuch rs1. Dobrym testem (przynajmniej dla Xterm) jest uczynienie kursora niewidocznym i sprawdzenie, czy reset go przywraca.
sendmoreinfo
4
resetpracował w moim przypadku
code_monk
1
cleardziała również w łagodnych przypadkach.
Navin
36
Miałem okazję, gdy żadna ze zwykłych sztuczek, resetlub stty sane, nie działała (po przypadkowym wywołaniu printbajtraya pytona). Odniosłem sukces z metodą 2 wymienioną na tym pomocnym blogu .
Od tego czasu stworzyłem najbardziej pomocny alias:
Wiem, że to stare, ale to jedyna powyższa odpowiedź, która zadziałała dla mnie! Dzięki
jredd
Ten echo -e "\033c"pomógł mi oczyścić sesję terminala SSH logowania znakowym zniekształcone, że miesza się po cat /etc/localtime.
Pro Backup
Działa to z OpenBSD, podczas gdy wszystkie inne nie.
Ciepła woda
1
dalsze eksperymenty z screenem (1) wykazały wymuszenie detatchowania wszystkich sesji (-D), a następnie wydanie komend resetowania na ekranie terminala, na którym został uruchomiony, może rozwiązać problem. może także wymagać zmiany nazw uszkodzonych nazw okien, które mogą ponownie wyświetlać te same dane binarne na terminalu, powodując ich uszkodzenie (a następnie zresetować jeszcze raz).
matematyka
1
Mój rozmiar terminala (LINES) został zmniejszony o około połowę po użyciu vi podczas łączenia się z konsolą zdalnego hosta Linux za pośrednictwem SOL. Sesja zdalna miała LINES = 24, natomiast moja lokalna sesja MAC miała LINES = 51. echo -e "\ 033c" nie działało dla mnie, ale żadna z innych poprawek, które próbowałem, nie działało ('stty sane', tput rs1, tput sgr0, reset).
Mark
7
Żadna wcześniejsza odpowiedź nie działała dla mnie. Ale wydaje się, że to załatwi sprawę w .bashrc dodaj:
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
a następnie, gdy wystąpi problem, wpisz to (nawet jeśli prawdopodobnie go nie widzisz!)
(ctl-c, ctl-c, ctl-c)
fix
Ogromne podziękowania dla poprzednich zgłaszających. Na marginesie, powodem, dla którego twój terminal robi się nieporadny podczas wyświetlania plików wykonywalnych (lub magazynów kluczy itp.) Jest to, że pliki te często zawierają sekwencje binarne, które są kodami sterującymi. Kody kontrolne mogą wykonywać losowe czynności, takie jak przełączanie na zestaw znaków graficznych, ustawianie kolorów pierwszego planu i tła na to samo itp.
To samo się stało. Nic mi nie działało, tylko ta kombinacja ...
TrueY
1
Zadzwoniłem do mojegosane
qodeninja
4
tmuxużytkownicy mogą być w stanie wysłać wszystkie te polecenia do swojej powłoki, ale resetowanie nie zostanie podniesione do tmuxpanelu.
Utwórz nowe okno Tmux: Zazwyczaj zanotuj
ctrl-B ctmux list-panes
numer panelu, który Twoim zdaniem jest zablokowany 0. Nazwijmy toPPP
Wybierz okno tmux, gdzie XXXznajduje się numer okna, który jest wykorkowany, niekoniecznie taki sam jak numer panelu.
ctrl-B XXXtmux send-key -R -t PPP
Zobaczysz wtedy wszystkie polecenia w pozostałych odpowiedziach na to pytanie, które trafiły do twojej powłoki, ale nie działały! Może żaluzja tmux send-key -R -t PPPzadziała, ale nie mogę przetestować.
Oprócz innych odpowiedzi wskazujących, jak zresetować terminal, doszedłem do wniosku, że korupcji nie da się uniknąć, jeśli nie będzie odpowiednio strzeżona. Lepiej więc wyślę dane wyjściowe do prostego konwertera tekstowego cat -v:
docker logs myjenkinscontainer 2>&1 | cat -v
Przeglądanie i edycja plików binarnych wydaje się możliwe przy pomocy hexdump -Ci vi -R( :%!xxd -g1dla widoku szesnastkowego i :%!xxd -g1 -rdo zapisywania zmian szesnastkowych).
reset
.Odpowiedzi:
Często czasy, kiedy w terminalu Unix / Linux (bash) na przykład użyjesz polecenia
more
lubless
czycat
aby wyświetlić plik. Gdy to zrobisz, a plik nie jest przeznaczony do przeglądania (np./bin/ls
), Otrzymasz wynik w następujący sposób:Chodzi o to, że właśnie próbowałeś wyświetlić plik, który jest programem. Plik wykonywalny, który nie powinien być oglądany w standardowych przeglądarkach, jak wspomniałem powyżej.
metoda nr 1 - reset
Aby rozwiązać ten problem, możesz wykonać następujące czynności:
reset
i naciśnij klawisz ReturnZwykle powinno to przywrócić terminal do normalnego trybu. Wspomnę jeszcze o jednej rzeczy, gdy wykonasz powyższe kroki, wpisując je na ślepo w swoim terminalu. Upewnij się więc, że wpisujesz go poprawnie.
metoda nr 2 - stty przy zdrowych zmysłach
Jak sugerowano w komentarzach @sendmoreinfo, możesz mieć więcej szczęścia, używając następujących poleceń, jeśli powyższe nie działa:
określanie typu pliku
Nawiasem mówiąc, jeśli natkniesz się na plik i nie jesteś pewien, czy to zepsuje twój terminal, możesz sprawdzić plik za pomocą polecenia,
file
które zgłosi typ pliku.Na przykład z
/bin/ls
tym plikiem pokazuje następujące dane wyjściowe:źródło
reset
nie jest w 100% lekarstwem na śmiertelne szaleństwo. Spróbuj,stty sane
a następnietput rs1
.stty sane
ale nigdytput
.reset
pracował w moim przypadkuclear
działa również w łagodnych przypadkach.Miałem okazję, gdy żadna ze zwykłych sztuczek,
reset
lubstty sane
, nie działała (po przypadkowym wywołaniuprint
bajtraya pytona). Odniosłem sukces z metodą 2 wymienioną na tym pomocnym blogu .Od tego czasu stworzyłem najbardziej pomocny alias:
źródło
echo -e "\033c"
pomógł mi oczyścić sesję terminala SSH logowania znakowym zniekształcone, że miesza się pocat /etc/localtime
.Żadna wcześniejsza odpowiedź nie działała dla mnie. Ale wydaje się, że to załatwi sprawę w .bashrc dodaj:
a następnie, gdy wystąpi problem, wpisz to (nawet jeśli prawdopodobnie go nie widzisz!)
Ogromne podziękowania dla poprzednich zgłaszających. Na marginesie, powodem, dla którego twój terminal robi się nieporadny podczas wyświetlania plików wykonywalnych (lub magazynów kluczy itp.) Jest to, że pliki te często zawierają sekwencje binarne, które są kodami sterującymi. Kody kontrolne mogą wykonywać losowe czynności, takie jak przełączanie na zestaw znaków graficznych, ustawianie kolorów pierwszego planu i tła na to samo itp.
źródło
sane
tmux
użytkownicy mogą być w stanie wysłać wszystkie te polecenia do swojej powłoki, ale resetowanie nie zostanie podniesione dotmux
panelu.Utwórz nowe okno Tmux: Zazwyczaj zanotuj
ctrl-B c
tmux list-panes
numer panelu, który Twoim zdaniem jest zablokowany0
. Nazwijmy toPPP
Wybierz okno tmux, gdzie
XXX
znajduje się numer okna, który jest wykorkowany, niekoniecznie taki sam jak numer panelu.ctrl-B XXX
tmux send-key -R -t PPP
Zobaczysz wtedy wszystkie polecenia w pozostałych odpowiedziach na to pytanie, które trafiły do twojej powłoki, ale nie działały! Może żaluzja
tmux send-key -R -t PPP
zadziała, ale nie mogę przetestować.źródło
Mam prawie taki sam alias jak w poprzednim poście, z jedną małą zmianą (
tput reset
zamiastrs1
) i jedną dodaną komendą (setterm -reset
):źródło
Nic powyżej mi nie pomogło. Jednak Jack Wasey wspomniał o tmuxie, więc po prostu pobiegłem
tmux
, wyszedłem ponownie i wszystko wróciło do normy.źródło
Oprócz innych odpowiedzi wskazujących, jak zresetować terminal, doszedłem do wniosku, że korupcji nie da się uniknąć, jeśli nie będzie odpowiednio strzeżona. Lepiej więc wyślę dane wyjściowe do prostego konwertera tekstowego
cat -v
:Przeglądanie i edycja plików binarnych wydaje się możliwe przy pomocy
hexdump -C
ivi -R
(:%!xxd -g1
dla widoku szesnastkowego i:%!xxd -g1 -r
do zapisywania zmian szesnastkowych).źródło