Запретить 256 цветов в терминале

На ваш первый вопрос уже есть ответ в процитированном вами тексте:

This is done in the PREROUTING chain, just as the packet comes in; this means that anything else on the Linux box itself (routing, packet filtering) will see the packet going to its 'real' destination.

Т.е. маршрутизация и фильтрация пакетов.

Что касается вашего второго вопроса :, похоже, вы пингуете из самой системы. Следовательно, пакеты не поступают в систему, следовательно, эти пакеты не проходят через цепочку PREROUTING. Вам нужно будет создавать эти пакеты из-за пределов этой системы.

0
11.07.2020, 16:07
2 ответа

Это невозможно по нескольким причинам.

До сих пор используются различные цветовые системы, которые приложения используют, чтобы указать терминалам, какой цвет использовать, оригинальная цветовая система 1970-х годов 8 -от ECMA -48 :1976, цветовая система AIXterm 16 -. с 1990-х годов, цветовая система ISO 8613 -6/ITU T.416 с индексом с 1990-х годов и ISO 8613 -6/ITU T.416 с прямым цветом система из 1990-х годов.

Первая причина :Только три из этих четырех вообще включают палитру. Прямого цвета нет. Если ваше приложение испускает последовательности прямого управления цветом, нет никакого способа изменить его цвета, за исключением прямой перенастройки или перекодирования приложения (как-то )для изменения используемых цветов. (Некоторые эмуляторы терминала не очень хорошо поддерживают прямой цвет и задействуют палитру, когда им говорят что-то, используя последовательности прямого управления цветом. Однако это не дает какой-либо разумной формы эффективного контроля, поскольку это механизм ближайшего соответствия; и эти эмуляторы терминала не являются общим случаем. )Для приложений TUI (не существует общей системы пользовательских предпочтений «цветовой схемы», которая есть в некоторых графических интерфейсах для приложений с графическим интерфейсом ).

Вторая причина :Палитра не содержит 16 элементов. Почти все эмуляторы терминалов, которые имеют такую ​​палитру, имеют входную цветовую палитру стиля VGA -256 -, и это та же самая палитра, которая используется для 8 -цветов и 16 -последовательностей управления цветом. (Разработчики Microsoft Terminal когда-то размышляли о возможности сделать их отдельными, но ни один автор эмулятора терминала, о котором я знаю, на самом деле не сделал этого. )В самой палитре нет предела по модулю 16 или по модулю 8.

Третья причина :16 цветов не просто.Первоначально (замалчивались некоторые детали )было 8 стандартных цветов, когда появились цветные терминалы. 16 цветов — это расширение, и существует целая путаница, связанная с объединением атрибутов полужирного шрифта, мерцания и подчеркивания текста с цветами. Беспорядочная история и подробности выходят за рамки этого ответа, и существует давление, чтобы наконец навести порядок, но в результате в настоящее время разногласия по поводу того, когда и как можно получить по крайней мере 8 из этих 16 цветов. Ваши приложения не обязательно согласятся с вами.

По иронии судьбы, ваша идея установить TERMна linuxособенно плоха, поскольку это один из способов вызвать особенно вопиющие разногласия. (То есть, более того, игнорирование того факта, что установка неправильного типа терминала, не соответствующего используемому терминалу, является неправильным действием , что само по себе является ответом . )Это один из способов указать приложениям не использовать цветовую систему AIXterm 16 -, а использовать 8-цветную -цветовую систему, которая злоупотребляет атрибутами для альтернативных цветов.

Четвертая причина :16 цветов не просто. Некоторые эмуляторы терминала, к сожалению, изменяют первые 16 записей в палитре на лету в соответствии с такими параметрами, как настройка экрана «светлый/темный фон» и атрибут обратного видео. Потому что они знают лучше, чем вы и ваши приложения. ☺

Пятая причина :Терминалы и эмуляторы терминалов не позволяют настраивать это. Невозможно указать эмулятору терминала ()не понимать 256 -цветов с индексом цвета или 24 -бит прямого цвета, когда приложение генерирует такую ​​управляющую последовательность. Ни в одном эмуляторе терминала, о котором я знаю, нет переключателя, который отключает обработку управляющей последовательности для цвета .

Следовательно, единственное, что можно сделать,это (попытка )сообщить приложениям не выдавать управляющие последовательности, а не приказать терминалам отказаться их понимать. Теория гласит, что нужно указать(правильный)тип терминала с -16colorили -monoили подобным суффиксом в переменной среды TERM, и поскольку это ограничивает то, что библиотека terminfo дает в качестве управляющих последовательностей для определяя цвет, приложения просто не знают, как указать больше цветов, чем это. Что подводит нас к шестой причине.

Шестая причина :Приложения, как правило, используют фиксированный цвет и не используют термининформацию. Опять же, за этим стоит целый беспорядок истории, который выходит за рамки этого ответа, но идея о том, что все используют возможности setabи setafterminfo, - просто несбыточная мечта. Множество множество приложений встраивают последовательности управления цветом прямо в свой код. Это особенно относится к приложениям, написанным на таких языках программирования, как (для примеров )Python и Go, которые, как правило, используют (полу--)переносимые библиотеки на тех языках, которые являются более поздними терминами и не работают из огромная база данных типов терминалов. (Я столкнулся с этим Python , например, буквально на днях. )Но это даже можно найти в некоторых распространенных инструментах GNU, написанных на C.

1
18.03.2021, 23:20

Из комментария:TERM=linuxработает. Я также пробовал TERM=xterm-16color, но это не имело никакого эффекта ).

0
18.03.2021, 23:20

Теги

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