Сделал кот / dev / urandom - сломанный терминал

31

Из любопытства, когда ваш набор символов оболочки перестает делать что-то вроде, cat /dev/urandomесть ли способ исправить это на месте?

Педро Монтото Гарсия
источник
6
Конечно ... не делай этого! Также, если вы считаете, что команда может выдавать недопустимые символы, используйте cat -A.
jnylen
2
Кроме того, мне всегда было любопытно, как catможно сломать ваш набор символов ...
авария
cat / bin / ls часто исправляет это (не знаю почему)
skarface
2
@crasic: он отправляет двоичный файл в терминал, и у каждого терминала есть способы изменить шрифт / цвет / и т. д., получая специальные символы. Смотрите изумительное: linusakesson.net/programming/tty (он же «TTY демистифицированный»). В зависимости от настроек TERM он будет реагировать по-разному (и, конечно, в зависимости от того, какие байты он получает и в каком порядке).
Оливье Дюлак
@skarface: вам, вероятно, повезло, что в конце двоичного файла / bin / ls были байтовые последовательности, которые фиксировали отображение. Это будет зависеть от операционной системы, двоичного файла (то есть, какой версии, какой компиляции optino и т. Д.) И настройки TERM вашего терминала ... поэтому я настоятельно рекомендую вместо этого использовать «stty sane» ^^
Olivier Dulac

Ответы:

50

Попробуйте один из них:

stty sane

или

reset

Если оба не работают, или ваш терминал настолько испорчен, что вы даже не можете вводить команды, тогда лучше закрыть терминал и запустить новый.

Обратите внимание, что stty saneэто определено POSIX, тогда resetкак нет. Это означает, что в некоторых системах их может не быть resetили они могут сделать что-то совершенно другое, например, сбросить всю систему. Я еще не сталкивался с системой без reset.

Для получения дополнительной информации прочтите главу « Клавиатура и консоль Linux» в разделе «Сброс настроек вашего терминала» .

lesmana
источник
Я дал тебе правильный ответ, потому что ты был первым. Извините за другие.
Педро Монтото Гарсия
В общем, запись случайных байтов в терминал вряд ли приведет к ситуации, которая требует исправления stty; это более вероятно из-за сбоя программы.
Random832
stty saneэто безопасный и правильный путь (я устал от «перезагрузки» по причинам, которые я изложил в комментариях под ответом Лэйна)
Оливье Дюлак
1
@OlivierDulac Спасибо, что поделились своим опытом. Я исследовал и узнал, что resetне определяется POSIX.
Lesmana
1
@ Я не думаю, что @OlivierDulac распространяет FUD. Ссылка, которая resetне является «безопасной», является фактом, что это не определено POSIX. Пожалуйста, прекратите распространять FUD, который @OlivierDulac распространяет FUD.
Lesmana
20

Вы можете попробовать использовать команду сброса .

user9517 поддерживает GoFundMonica
источник
4
Вы связали справочную страницу, неявно порекомендовав хороший RTFM. Ты мой герой сегодня, спасибо.
Luke404
Это работает на многих Unix-системах ... Но некоторые предупреждающие слова: будьте осторожны: в некоторых системах (то есть в других ОС или, возможно, в каком-либо другом дистрибутиве Linux?) Это может инициировать сброс системы (я полагаю, например, это происходит на некоторые версии соляриса). Поэтому перезагрузка системы, то есть принудительная перезагрузка (без надлежащего выключения) ... Как и для любой команды, будьте осторожны. (Это справедливо и для других команд: некоторые tar, например, НЕ удаляют префиксы "/" и поэтому могут перезаписывать конфиденциальные файлы и т. Д. Всегда убедитесь, что вы знаете, как команда, которую вы намереваетесь использовать, работает в системе, которую вы используете. используют.)
Оливье Дюлак
1
@OlivierDulac; ОП пометил свой вопрос linux, чтобы он получил linuxcentric ответ, хотя он будет работать на других системах Unix, включая Solaris, без проблем. Я работал с Solaris в течение 15 лет! Вы путаете команду сброса SPARC Open Boot Prom с командой userland reset (1). Если вы выполните сброс в приглашении ok, вы вряд ли восстановитесь с поврежденного терминала.
user9517 поддерживает GoFundMonica
@lain: ах, это может быть так (выпускной Boot), действительно. Но, тем не менее, это означает, что в некоторых средах «сброс» связан с перезагрузкой хоста, поэтому я предпочитаю, чтобы люди (даже если они «в основном» в Linux) изучали / использовали команду «safe» «stty sane» (которая гласит, что это так, и это не так двусмысленно, как «перезагрузка») ... вот почему я предупреждаю читателей об этом.
Оливье Дюлак
@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD, все ссылки сбрасываются в tset - пожалуйста, предоставьте доказательства своей дезинформации, кроме того, что вы что-то неправильно запомнили. OBP не является хост-ОС, поэтому он не считается.
user9517 поддерживает GoFundMonica
11

Команда resetдолжна работать.

Changaco
источник