Самой близкой вещью, с которой я столкнулся к инструменту как это, является pkgs.org:
pkgs.org - Каталог программного обеспечения Linux и Поиск Пакетов pkgs.org создаются для предоставления Вам самый простой метод поиска и загрузки новейших версий лучшего программного обеспечения Linux - без обычных чрезмерных всплывающих окон или шпионского ПО. Также используйте его для нахождения альтернатив коммерческим пакетам с дорогими лицензионными сборами и сложными ограничениями.
Существует восемь стандартных цветов ANSI, поддерживаемых каждым эмулятором терминала. Большинство эмуляторов терминала также имеет восемь ярких вариантов стандартных цветов ANSI.
Однако фактические значения цвета, на которые отображаются управляющие коды, не стандартизированы, и на самом деле они часто немного варьируются среди эмуляторов терминала. Таким образом, если Вы делаете printf "\e[31;47mTest\n"
для печати красного текста на белом фоне фактические оттенки красного и белого цвета, который Вы получаете, могут отличаться в зависимости от эмулятора терминала, который Вы используете.
Так, чтобы частично объяснил проблему: значения цвета не являются стандартными, и LXTerminal
может иметь различные значения по умолчанию для его цветовой палитры, к которой Вы не привыкли. Если Вы озираетесь в настройках, обычно можно настроить цветовую схему, чтобы быть независимо от того, что Вам нравится.
Другая проблема, с которой Вы сталкиваетесь, состоит в том, что то, что на самом деле делает атрибут полужирного начертания, не стандартизировано также. Существует три возможности: это может сделать шрифт полужирным, это может сделать основной цвет более ярким, или это может и сделать основной цвет более ярким и сделать шрифт полужирным.
Снова, поведение по умолчанию здесь варьируется среди эмуляторов терминала, и можно обычно изменять его, если может Вы находить правильную установку. Grep для чего-то, упоминая 'полужирный' или 'яркий'.
Если Вы хотите использовать яркий цвет, то можно использовать так называемые управляющие коды цвета aixterm вместо полужирного. Они не являются стандартными, но они поддерживаются в каждом современном эмуляторе терминала, о котором я знаю. В отличие от полужирного, они всегда используют яркие цвета, плюс они могут использоваться для отображения ярких цветов фона.
Так, например, если бы Вы хотели распечатать яркий красный текст на ярком белом фоне, то Вы сделали бы это: printf "\e[91;107mTest\n"
.
Для ссылки вот таблица всех цветных управляющих кодов:
| ANSI | ANSI | ANSI | | Aixterm | Aixterm
| Color | FG Code | BG Code | Bright Color | FG Code | BG Code
+---------+---------+-------- +----------------+---------+--------
| Black | 30 | 40 | Bright Black | 90 | 100
| Red | 31 | 41 | Bright Red | 91 | 101
| Green | 32 | 42 | Bright Green | 92 | 102
| Yellow | 33 | 43 | Bright Yellow | 93 | 103
| Blue | 34 | 44 | Bright Blue | 94 | 104
| Magenta | 35 | 45 | Bright Magenta | 95 | 105
| Cyan | 36 | 46 | Bright Cyan | 96 | 106
| White | 37 | 47 | Bright White | 97 | 107
1
атрибут в начале 1;31;40
включает "полужирный" (иначе. "яркий"), режим, но некоторые терминалы только применяет это к основному цвету. Я понятия не имею, по какой причине (и замена переменной $TERM не имеет никакого значения), так как они действительно поддерживают 16, раскрашивает передний план 1 0 (от 40
: 4 = фон, 0 = цвет), на самом деле черный, но "яркий черный цвет", является серым. Вот два решения:
Окрасьте 7 (белых), вероятно, окажется серым, не белый (для истинного белого, Вам нужен "яркий белый", имея в виду фон, который Вы на самом деле не можете иметь, является белым).
Необходимо смочь терминал гнома использования в LXDE, если Вы хотите. Просто установите его и запуститесь с gnome-terminal
(Я полагаю, что это - его название команды). Затем необходимо будет настроить любые средства запуска для использования этого вместо lx-терминала.
1 Вот мое предположение: Заметьте, что полужирная установка применяет яркость к основному цвету и добавляет полужирный акцент. Следовательно, Вы не можете использовать яркий основной цвет, также не подавая заявку полужирный. По-видимому, назад, когда монохромные терминалы были общими, просто установив полужирный для акцента, например: \\033[1mBlah blah\\033[0m
было распространено - и на самом деле это будет все еще работать, но это также сделает Ваш основной цвет ярким. Если бы мы считали это нежелательным для этого, чтобы также украсить фон (потому что это, как просто предполагается, является полужирным), то мы удостоверились бы, что реализация не сделала этого. О, хорошо.
gnome-terminal
и цвета отображены правильно. Это означает, что эта проблема характерна для LXTerminal
? Там какой-либо путь состоит в том, чтобы зафиксировать это? Я предпочел бы использовать LXTerminal
, если эта проблема могла бы быть решена.
– Martin Vegter
06.10.2013, 22:09
gnome-terminal
возможно, единственный терминал, чтобы сделать, что Вы хотите - я был пользователем Linux в течение ~15 лет и узнал о последовательностях ANSI вначале из-за подсказки; это было всегда похоже на это. Я смог выяснять решительно, почему путем исследования официальных спецификаций ANSI и/или прохождения через источник, но это потребует очень неопределенного промежутка времени ;) Я ничто не нашел обнадеживающим после просмотра веб-сайтов, настолько Ваш - хороший вопрос, но кто-то, кто уже знает, мог прийти в следующий день или так...
– goldilocks
06.10.2013, 22:26
Вот трюк, который можно использовать с некоторыми эмуляторами терминала. Это даст вам яркие цвета фона, используя обратный атрибут -видео (7 ), чтобы выбрать яркий цвет переднего плана, а затем поменять его местами с цветом фона.
echo -e "\e[1;32;7mText on a bright green background"
Загвоздка в том, что хотя теперь вы можете иметь 16 цветов фона, ограничение в 8 цветов теперь применяется к переднему плану/тексту. И чтобы еще больше запутать ситуацию, пока активен атрибут обратного видео -, вы должны установить цвет текста, используя коды атрибутов для цветов фона!
С 47=background white
вместо 40=background black
вы получите не -полужирный белый цвет в качестве фона.
]# printf "\033[0;30;47m"hello"\033[00m\n"
hello (black on grey)
]# printf "\033[1;30;47m"hello"\033[00m\n"
hello (darkgrey on grey)
]# printf "\033[1;37;47m"hello"\033[00m\n"
hello (white on grey)
]# printf "\033[0;37;47m"hello"\033[00m\n"
hello (INVISIBLE grey on grey)
Жирный черный цвет по умолчанию дает темно-серый цвет. Обычный белый на самом деле серый, потому что жирный белый — это белый.
Этот цикл печатает два столбца со всеми сочетаниями цветов -на -черно-белом -на -цветах.
for ((i=30; i<=47; i++))
do
echo -en "\e[${i}mHello\e[0m";
echo -e "\e[1;${i}mHello\e[0m";
done
Он начинается с невидимого черного и темно-серого -на черном -, но остальные 17 строк выглядят красиво и отображают всю цветовую палитру консоли.
(38 и 39 следует опустить, но для простоты я просто пробегаю от 30 до 47)
Принятый А. упоминает восемь цветов и отсутствие стандартов.
Шесть цветов 31 -36 (от красного до голубого )хорошо определены. Черный (30 )и белый (37 )тоже, но их жирные варианты меньше, особенно в качестве фона (40 и 47 ).
Я только что заметил :что в xterm обычный белый текст виден на сером фоне, а в консоли linux нет. (последняя строка с i=47)(до 30 минут назад скрипт остановился на 46, потому что я не хотел нечитаемых вариантов)
В обоих местах при выборе мыши -она умело адаптируется и остается читаемой при переворачивании.
joe editor
. Вgnome-terminal
, Я вижу серый фон. ВLXTerminal
это отсутствует. – Martin Vegter 07.10.2013, 13:35LXTerminal
иgnome-terminal
, синий цвет выглядит очень отличающимся. Но назад к моей исходной проблеме: серый фон вLXTerminal
не просто другой цвет, чем вgnome-terminal
, но это отсутствует полностью. – Martin Vegter 07.10.2013, 13:49LXTerminal
но отображенный на сером вgnome-terminal
. Я не используюLXTerminal
, но я держал пари, смотрите ли Вы в настройках и изменяете какие-либо 'черные' цвета на 'серый', это станет видимым. – Matt 07.10.2013, 21:25LXTerminal
к чему-то другому, чем черный, чем я вижу этоprintf "\n\033[1;31;40m"hello"\033[00m\n\n"
текст печати на черном backround. Таким образом, чтоgnome-terminal
интерпретирует как серый,LXTerminal
интерпретирует как черный. Есть ли любой способ отобразиться серый вLXTerminal
, то же как вgnome-terminal
? – Martin Vegter 08.10.2013, 10:52