Шаги для воспроизведения
Рассмотрим следующую команду оболочки:
echo -e "\e[41mTest\nTest2\e[0mTest3"
Она печатает Test
и в следующей строке Test2
с красным фоном (с использованием escape-кода ANSI).За Test2
следует непосредственно Test3
, который не окрашен.
Поведение
При первом выполнении этой команды все работает, как ожидалось.Однако вывод не соответствует.Приблизительно после 10-20 вызовов конец второй строки также становится красным.Я впервые наткнулся на это в моем приложении C ++.Так что я подумал, что это, вероятно, не связано с bash.
После открытия я подумал, что это может быть ошибка в gnome-terminal
.Однако поведение точно такое же в xterm
.
Edit
Благодаря комментарию Geno Chen я понял, что это происходит, когда в терминале заканчиваются линии и ему приходится прокручиваться.
Снимки экрана
Вот снимки экрана вышеупомянутой проблемы:
Терминал GNOME

xterm

Вещи, о которых идет речь
Несмотря на то, что в моем приложении C ++ это немного неясно, это не нарушает условия сделки.Однако я хотел бы знать, если что-то не так с моими escape-последовательностями или это ошибка в какой-то части оболочки.И если есть что-то, что я могу сделать, чтобы это исправить или обойти это.