Конечно ... не делай этого! Также, если вы считаете, что команда может выдавать недопустимые символы, используйте 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.
Я дал тебе правильный ответ, потому что ты был первым. Извините за другие.
Педро Монтото Гарсия
В общем, запись случайных байтов в терминал вряд ли приведет к ситуации, которая требует исправления stty; это более вероятно из-за сбоя программы.
Random832
stty saneэто безопасный и правильный путь (я устал от «перезагрузки» по причинам, которые я изложил в комментариях под ответом Лэйна)
Оливье Дюлак
1
@OlivierDulac Спасибо, что поделились своим опытом. Я исследовал и узнал, что resetне определяется POSIX.
Lesmana
1
@ Я не думаю, что @OlivierDulac распространяет FUD. Ссылка, которая resetне является «безопасной», является фактом, что это не определено POSIX. Пожалуйста, прекратите распространять FUD, который @OlivierDulac распространяет FUD.
Lesmana
20
Вы можете попробовать использовать команду сброса .
Вы связали справочную страницу, неявно порекомендовав хороший 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 не является хост-ОС, поэтому он не считается.
cat -A
.cat
можно сломать ваш набор символов ...Ответы:
Попробуйте один из них:
или
Если оба не работают, или ваш терминал настолько испорчен, что вы даже не можете вводить команды, тогда лучше закрыть терминал и запустить новый.
Обратите внимание, что
stty sane
это определено POSIX, тогдаreset
как нет. Это означает, что в некоторых системах их может не бытьreset
или они могут сделать что-то совершенно другое, например, сбросить всю систему. Я еще не сталкивался с системой безreset
.Для получения дополнительной информации прочтите главу « Клавиатура и консоль Linux» в разделе «Сброс настроек вашего терминала» .
источник
stty sane
это безопасный и правильный путь (я устал от «перезагрузки» по причинам, которые я изложил в комментариях под ответом Лэйна)reset
не определяется POSIX.reset
не является «безопасной», является фактом, что это не определено POSIX. Пожалуйста, прекратите распространять FUD, который @OlivierDulac распространяет FUD.Вы можете попробовать использовать команду сброса .
источник
Команда
reset
должна работать.источник