Czy cat / dev / urandom - Broken terminal


31

Z ciekawości, kiedy twój zestaw znaków powłoki przerywa robienie czegoś takiego, cat /dev/urandomczy istnieje sposób, aby to naprawić?


6
Jasne ... nie rób tego! Ponadto, jeśli uważasz, że polecenie może generować nieprawidłowe znaki, użyj cat -A.
jnylen

2
Dodatkowo zawsze byłem ciekawy, jak catzłamać swój zestaw znaków ...
crasic

cat / bin / ls często to naprawia (nie wiem dlaczego)
skarface

2
@crasic: wysyła dane binarne do terminala, a każdy terminal może zmieniać czcionkę / kolor / itp., otrzymując specjalne znaki. Zobacz cudowny: linusakesson.net/programming/tty (alias „TTY demystified). W zależności od twojego ustawienia TERM będzie także reagować inaczej (i oczywiście w zależności od tego, jakie bajty otrzymuje i w jakiej kolejności).
Olivier Dulac

@skarface: prawdopodobnie miałeś szczęście, że plik binarny / bin / ls miał pod koniec sekwencje bajtów, które naprawiły wyświetlanie. Będzie to zależeć od systemu operacyjnego, pliku binarnego (tj., Która wersja, jakiego kompilacji użyłeś Optino itp.) Oraz ustawienia TERM twojego terminala ... więc bardzo polecam użycie zamiast tego "stty sane" ^^
Olivier Dulac

Odpowiedzi:


50

Spróbuj jednego z tych:

stty sane

lub

reset

Jeśli oba nie działają, lub twój terminal jest tak zepsuty, że nie możesz nawet wprowadzać poleceń, najlepiej zamknąć terminal i uruchomić nowy.

Zauważ, że stty sanejest zdefiniowane przez POSIX, podczas gdy resetnie jest. Oznacza to, że w niektórych systemach może nie być resetlub może zrobić coś zupełnie innego, na przykład zresetować cały system. Nie spotkałem jeszcze systemu bez reset.

Więcej informacji w tle znajduje się w rozdziale Klawiatura i konsola Linuxa HOWTO” w rozdziale „Resetowanie terminala” .


Dałem ci właściwą odpowiedź, ponieważ byłeś pierwszy. Przepraszam innych.
Pedro Montoto García

Zasadniczo, zapisywanie losowych bajtów na terminalu raczej nie spowoduje, że będzie to wymagało naprawy stty przy zdrowych zmysłach; jest bardziej prawdopodobne, że nastąpi awaria programu.
Random832,

stty sanejest bezpieczny i właściwy sposób (jestem zmęczony „resetowaniem” z powodów, które podałem w komentarzach pod odpowiedzią Laina)
Olivier Dulac

1
@OlivierDulac Dziękujemy za podzielenie się doświadczeniami. Badałem i dowiedziałem się, że resetnie jest zdefiniowany przez POSIX.
lesmana

1
@Iain Nie sądzę, że @OlivierDulac rozpowszechnia FUD. Odniesieniem, które resetnie jest „bezpieczne”, jest fakt, że nie jest zdefiniowane przez POSIX. Przestań rozpowszechniać FUD, które @OlivierDulac rozpowszechnia FUD.
lesmana

20

Możesz spróbować użyć polecenia resetowania .


4
Połączyłeś stronę man, domyślnie polecając dobry RTFM. Jesteś dziś moim bohaterem, dzięki.
Luke404,

Działa to na wielu systemach uniksowych ... Ale słowo ostrzeżenia: bądź ostrożny: w niektórych systemach (np. W innych systemach operacyjnych, a może w innej dystrybucji linuksa?) Może to zainicjować reset systemu (sądzę, że na przykład działa na niektóre wersje solaris). Dlatego resetuj system, tj. Wymuszając ponowne uruchomienie (bez odpowiedniego wyłączenia) ... Jak w przypadku każdego polecenia, bądź ostrożny. (Dotyczy to również innych poleceń: niektóre „tar” na przykład NIE usuwają prefiksów „/” i dlatego mogą zastępować poufne pliki itp. Zawsze upewnij się, że wiesz, w jaki sposób polecenie, którego zamierzasz użyć, działa w systemie używają.)
Olivier Dulac

1
@OlivierDulac; OP oznaczył swoje pytanie linux, więc otrzymał odpowiedź na Linux-a, choć będzie działać bez problemu na innych systemach uniksowych, w tym Solaris. Pracuję z Solaris od 15 lat! Mylisz polecenie resetowania SPARC Open Boot Prom z poleceniem resetowania użytkownika (1). Jeśli zresetujesz się po wyświetleniu monitu OK, prawdopodobnie nie będzie można odzyskać danych z uszkodzonego terminala.
user9517 obsługuje GoFundMonica

@lain: ah, to może być rzeczywiście (bal Open Boot). Ale nadal oznacza to, że w niektórych środowiskach „reset” jest powiązany z resetowaniem hosta, więc wolę ludzi (nawet jeśli są „głównie” na systemie Linux), aby uczyć się / korzystać z polecenia „bezpiecznego” „stty sane” (który określa co robi to i nie jest tak dwuznaczny jak „reset”) ... dlatego ostrzegam czytelników o tym.
Olivier Dulac

@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD wszystkie linki zostały zresetowane do tset - proszę przedstawić dowody na twoje dezinformacje inne niż błędne zapamiętanie czegoś. OBP nie jest systemem operacyjnym hosta, więc się nie liczy.
user9517 obsługuje GoFundMonica

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.