Можно ли в 2019 году предположить, что все терминалы понимают escape-коды ANSI?

Мой mailx использует опцию -aдля добавления заголовка к письму. Попробуйте опцию -Aдля отправки вложения.

Редактировать:

Проблема была решена OP путем удаления символа пробела «между именем переменной и знаком равенства». Опция -aбыла правильной в CentOS, а не в проблеме.

4
01.11.2019, 14:26
1 ответ

Если я правильно понял вопрос, он действительно сводится к мнению? Далее делается попытка обобщить некоторые моменты, которые стоит рассмотреть

.

Не весь вывод подается на клеммы

Как бы тривиально это ни звучало, даже если каждый терминал в мире правильно понимает последовательности ANSI (, это не так, как упоминалось в комментариях, для утверждений о всех достаточно найти один контрпример для отклонения утверждения ):Рассмотрим два случая перенаправления в файлы или конвейерной обработки вывода через другие программы (, например интерактивно используемый grepили скриптовый вызов программ ).

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

Цвета могут быть разными

Я написал довольно много скриптов, которые просто выводят необработанные последовательности ANSI независимо отTERM(обычно с возможностью включения/выключения этой окраски ). Использование разных эмуляторов терминала, оболочек или даже опций для одного и того же эмулятора терминала,Я часто получал разноцветный вывод. Редко (, но случаи существуют, и все они могут быть обнаружены в современных системах Linux )Я также заметил, что окраска становится неузнаваемой (, например. темно-серый на черном или подобном ). Иногда к чему-то, что должно было быть окрашено только в зеленый цвет, применялся эффект "перечеркнутого"...

Для «забавного понимания» возьмите любой тест, который использует множество управляющих последовательностей ANSI безоговорочно (, то есть независимо от TERM), а затем запустите его в :rxvt, gnome-terminal, xtermи, наконец, на консоль линукс.

Без использования одного из уровней абстракции всегда есть вероятность того, что раскрашивание не удастся, хотя управляющие последовательности распознаются и обрабатываются целевым приложением.

Заключение

В 2019 году не совсем безопасно предполагать, что необработанные escape-последовательности ANSI будут работать должным образом.

Подумайте, насколько важно управление терминалом для вашего приложения :Если оно важно (в том смысле, что оно теряет значительную функциональность без цветов/управления терминалом ), риск того, что что-то пойдет не так с исходным ANSI escape-последовательности слишком высоки. Если это не так важно (например. глаз -конфеты для журналов, причудливые интерактивные меню против простых интерактивных меню и т. д. ), кажется разумным использовать очень ограниченную абстракцию цветного вывода (, например. необработанные последовательности ANSI + возможность включения всех цветов ).

Другие релятивизирующие утверждения

Когда тому же приложению, которое требует цветного вывода или других управляющих последовательностей терминала, также необходимо получать ввод особым образом, настало время обратиться к тщательно разработанному решению, такому как ncurses или что-то более «современное». "...

Как было отмечено в комментариях :Только проверенные среды действительно безопасны для любого программного обеспечения. Если вы знаете окружающую среду,всегда возможно (хотя и за счет некоторой абстрактной "переносимости" )добавить в вашу программу допущения, которые выполняются в этой среде.

Наконец, программы, которые на самом деле используют более продвинутую библиотеку с информацией о терминале, также небезопасны при любых обстоятельствах. :Цвета зависят от настроенных цветовых схем терминала, а некоторые эффекты, такие как подчеркивание, просто недоступны с все комбинации терминалов и шрифтов. Кроме того, есть также несколько случаев, когда TERMустанавливается «неправильно», что приводит к сбою приложения (. У меня часто возникают проблемы при запуске tmuxповерхssh).

6
27.01.2020, 20:57

Теги

Похожие вопросы