Чи помилка невидимого тексту в bash - це помилка чи функція?


8

У кожному окремому дистрибутиві Linux, який я використовував за останні 10 років, виникли такі незручності: Ви запускаєте програму в терміналі за допомогою bash. Після того, як програма буде зупинена або перервана, те, що ви вводите, іноді видається невидимим. Потім можна ввести команду "скинути", і екран очиститься, а курсор знову буде видно.

Через цю помилку я завжди міняв оболонку на zsh, коли я вперше входив у новий термінал. У zsh невидимий текстовий помилка ніколи не буває. Оскільки помилка зараз існує вже більше 10 років, я почав підозрювати, що це особливість баш. Отже, чи може хтось сказати мені, для чого це добре?

Крім того, де насправді розташована домашня сторінка bash / трекер помилок. Bash.org, схоже, йдеться про "ІТ-базування", і так само #bash irc канал. Чому більшість дистрибутивів Linux включає оболонку, на яку так важко дати відгук, коли кілька альтернатив принаймні настільки ж хороші?

bash  shell 

1
Отже ... яка частина вашого питання знову пов'язана з програмуванням?
Ігнасіо Васкес-Абрамс

2
Будь ласка, направте мене в потрібне місце, щоб запитати. Іронія полягає в тому, що пошук Google в "трешечку помилок помилок оболонки" в даний час веде на цю сторінку.

Ось що відбувається, коли ви catдвійкові файли ...
Яб

Відповіді:


11

Це лише значення, ніж у zsh, ви не можете зробити щось на кшталт:

stty -echo     #turn off echoing what you type
stty echo      #turn on echoing
reset          #reset terminal to the default state

У bash, вищезазначена команда працює як очікувалося - вимкніть відлуння команди. Просто спробував в zsh - не працює. У кого є помилка? ;)

Вимкнути лунання можна досягти за допомогою послідовностей ESC, тому якщо ваша програма випадковим чином надсилає бінарні послідовності до терміналу, {або коли ви CTRL- \ деяку програму, орієнтовану на екран), вона поводиться так, як stty -echoвам і потрібно reset. Це не помилка - просто це те, як працюють термінали (і емулятори терміналів).

Що дивно, чому в zsh stty -echoне працює.


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