Зробив кішку / дев / урадон - зламаний термінал


31

З цікавості, коли ваш набір символів оболонки відривається від чогось подібного cat /dev/urandom, чи є спосіб виправити це на місці?


6
Звичайно ... не роби цього! Крім того, якщо ви думаєте, що команда може створювати недійсні символи, використовуйте cat -A.
jnylen

2
Крім того, мені завжди було цікаво, як catможна зламати ваш набір персонажів ...
аварійно

cat / bin / ls часто це виправляє (не знаю чому)
skarface

2
@crasic: він надсилає бінарний термінал, і кожен термінал має способи змінити шрифт / колір / тощо, отримуючи спеціальні caracters. Дивіться дивовижний: linusakesson.net/programming/tty .. (Ака «TTY демістифікувати) В залежності від вашої установки TERM, вона буде реагувати по- іншому теж (і, звичайно, в залежності від того, що байт він приймає і в якому порядку)
Олів'є Дюлак

@skarface: вам, мабуть, пощастило, що бінарний файл / bin / ls, наприкінці, мав послідовності байтів, які фіксували показ. Це залежатиме від ОС, двійкової (тобто, яка версія, яка компіляція використовується оптино тощо), а також термінальної настройки вашого терміналу ... тому я настійно рекомендую замість цього використовувати "stty sane" ^^
Olivier Dulac

Відповіді:


50

Спробуйте один із таких:

stty sane

або

reset

Якщо обидва не працюють, або ваш термінал настільки заплутаний, що ви навіть не можете вводити команди, то краще закрити термінал і запустити новий.

Зверніть увагу, що stty saneвизначено POSIX, тоді як resetце не так. Це означає, що в деяких системах може не бути resetабо воно може робити щось зовсім інше, як, наприклад, скидання всієї системи. Я ще не стикався з системою без reset.

Для отримання додаткової інформації читайте "Клавіатура та консоль Linux HOWTO" розділ "Скидання терміналу" .


Я дав тобі правильну відповідь, тому що ти був першим. Вибачте за іншими.
Педро Монтото Гарсія

Взагалі, запис випадкових байтів у термінал навряд чи може поставити його в ситуацію, яка потребує жорсткого розуму для виправлення; це більше шансів на вихід із збоїв програми.
Випадково832

stty saneце безпечний і правильний спосіб (я втомився від "скидання" з причин, про які я зазначив у коментарях під відповідь простягнення)
Олів'є Дулак

1
@OlivierDulac Дякуємо, що поділилися своїм досвідом. Я дослідив і дізнався, що resetPOSIX не визначено.
lesmana

1
@Iain Я не думаю, що @OlivierDulac поширює FUD. Посилання, яке resetне є "безпечним", полягає в тому, що він не визначений POSIX. Будь ласка, припиніть поширювати FUD, що @OlivierDulac поширює FUD.
lesmana

20

Ви можете спробувати скористатися командою скидання .


4
Ви пов’язали довідкову сторінку, неявно рекомендуючи хороший RTFM. Ти сьогодні мій герой, дякую.
Лука404

Це працює на багатьох оніксах ... Але якесь слово попередження: будьте обережні: для деяких систем (тобто інших ОС, чи, можливо, іншого розповсюдження Linux?) Це може ініціювати скидання системи (я вважаю, що це робиться на деякі версії solaris). Тому перезавантажуйте систему, тобто змушуйте перезавантажуватися (без належного відключення) ... Як і для будь-якої команди, будьте обережні. (Це справедливо і для інших команд: деякі 'tar', наприклад, НЕ видаляйте префікси "/" і тому можуть перезаписувати чутливі файли тощо. Завжди переконайтеся, що ви знаєте, як працює команда, яку ви плануєте використовувати в системі, яку ви користуються.)
Олів'є Дулак

1
@OlivierDulac; ОП позначила його питання linux, тому він отримав відповідь linuxcentric, хоча це буде працювати в інших системах Unix, включаючи Solaris без проблем. Я працював з Solaris 15 років! Ви плутаєте команду скидання програми SPARC Open Boot Prom з командою userset reset (1). Якщо ви видасте скидання у вікні ОК, ви навряд чи відновитесь із корумпованого терміналу.
user9517 підтримує GoFundMonica

@lain: Ага, це могло б бути це (Дім відкритих завантажень). Але все-таки це означає, що в деякому середовищі "скидання" пов'язане зі скиданням хоста, тому я віддаю перевагу людям (навіть якщо вони "здебільшого" в Linux), щоб дізнатися / використати команду "безпечний" "stty sane" (в якій зазначено, що це робить, і не настільки неоднозначно, як "скидання") ... саме тому я попереджаю читачів про це.
Олів'є Дулак

@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD всі скидання посилань на tset - будь ласка, надайте докази для вашої дезінформації, окрім того, що ви щось не пам’ятаєте. OBP не є хост-операційною системою, тому не враховується.
user9517 підтримує GoFundMonica

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.