8

Я использую Linux Mint, MATE версия. У меня возникает странная проблема, которая возникает довольно часто при прокрутке файлов журнала в терминале: машина останавливается на секунду или две, а когда она возвращается, мои системные цвета шифруются. То есть все цвета ANSI перепутаны - красный думает, что он желтый, желтый думает, что он зеленый и т.д. Это касается не только терминала, но и нескольких других приложений для настольных компьютеров: Caja (замена nautilus), Geany (текстовый редактор) и Gedit.

Назначение цвета кажется случайным и иногда приводит к непригодным для использования комбинациям, например, замена белого на черный (бесполезно на черном фоне). Мне нужно перезагрузиться, чтобы вернуть цвета.

Я предполагаю, что происходит то, что некоторые строки символов в файле журнала не экранированы должным образом и что-то попадают в систему, но я недостаточно технически, чтобы попытаться отладить это. Есть ли какая-нибудь команда, которую я мог бы ввести, чтобы сбросить все цвета обратно, кто-нибудь знает?

Благодарен за любой совет, макс

РЕДАКТИРОВАТЬ - прикрепленный скриншот

РЕДАКТИРОВАТЬ - я использую MATE Terminal 1.2.1

2 ответа2

11

Ввод двоичных символов на экран терминала опасен, поскольку некоторые управляющие последовательности интерпретируются как команды, которые изменяют режим терминала, а не только для цветов. Это связано с тем, что терминал Linux эмулирует антикварную консоль VT100 (с дополнениями). Смотрите этот пост для хорошего объяснения проблемы.

Для очистки вашего tty используйте одну или несколько из следующих команд:

  • reset
  • stty sane
  • tput init
  • tput reset

Более верным способом может быть использование команды stty для сохранения и сброса всех ваших настроек сразу:

  1. Используйте stty -g для печати текущих настроек в удобном для чтения формате
  2. Скопируйте полученную строку
  3. Добавьте в свой файл инициализации оболочки (.bashrc или любой другой) псевдоним (s для здравомыслящего) как:
    alias s='stty <output string from step 2>'
  4. Теперь, когда возникает путаница, просто введите: s Enter
2

Правильный ответ (по крайней мере, это сработало в моем случае):

tput sgr0

Из документации:

tput sgr0 - отключить все атрибуты

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .