Я провожу большую часть своего времени, работая в среде Unix и используя эмуляторы терминала. Я пытаюсь использовать цвет в командной строке, потому что цвет делает вывод более полезным и интуитивно понятным.
Какие варианты существуют, чтобы добавить цвет в мою терминальную среду? Какие трюки вы используете? С какими подводными камнями вы столкнулись?
К сожалению, поддержка цвета варьируется в зависимости от типа терминала, ОС, настроек TERM, утилит, ошибочных реализаций и т. Д.
Вот несколько советов из моей настройки после долгих экспериментов:
- Я склонен устанавливать
TERM=xterm-color
, что поддерживается на большинстве хостов (но не на всех). - Я работаю на разных хостах, разных версиях ОС и т. Д. Я использую все, от macOS X, Ubuntu Linux, RHEL / CentOS / Scientific Linux и FreeBSD. Я стараюсь сделать вещи простыми и общими, если это возможно.
- Я делаю кучу работы, используя GNU
screen
, что добавляет еще один интересный уровень. - Многие ОС устанавливают такие вещи как
dircolors
и по умолчанию, и я не хочу изменять это на сотне разных хостов. Поэтому я стараюсь придерживаться значений по умолчанию. Вместо этого я настраиваю цветовую конфигурацию моего терминала. Использование цвета для некоторого Unix команд (
ls
,grep
,less
,vim
) и Баш строке . Кажется, что эти команды используют стандартную « escape-последовательность ANSI ». Например:alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}'
Я опубликую .bashrc
и отвечу на свой вопрос Jeopardy Style.
column -t --color
?Ответы:
Вот несколько вещей, которые вы можете сделать:
Редакторы + код
Многие редакторы имеют поддержку подсветки синтаксиса.
vim
иemacs
включить его по умолчанию. Вы также можете включить его вnano
.Вы также можете синтаксически выделить код на терминале, используя Pygments в качестве инструмента командной строки.
grep
grep --color=auto
выделяет все совпадения Вы также можете использовать его,export GREP_OPTIONS='--color=auto'
чтобы сделать его постоянным без псевдонима. Если вы используете--color=always
, он будет использовать цвет даже при обвязке , что сбивает с толку.Ls
ls --color=always
Цвета указаны по:
(подсказка:
dircolors
может быть полезным)PS1
Вы можете настроить PS1 (приглашение оболочки) на использование цветов. Например:
Будет производить PS1, как:
[желтый] lucas @ ubuntu: [красный] ~ [обычный] $
Вы можете стать действительно творческим с этим. Как идея:
Ставит панель в верхней части вашего терминала с некоторой случайной информацией. (Для достижения наилучших результатов также используйте
alias clear="echo -e '\e[2J\n\n'"
.)Избавляемся от последовательностей побега
Если что-то застряло при выводе цвета, когда вы этого не хотите, я использую эту
sed
строку для удаления escape-последовательностей:Если вы хотите более аутентичный опыт, вы также можете избавиться от строк, начинающихся с
\e[8m
, что указывает терминалу скрыть текст. (Широко не поддерживается.)Также обратите внимание, что эти ^ [s должны быть действительными, буквальными ^ [s. Вы можете ввести их, нажав ^ V ^ [в bash, то есть Ctrl+ V, Ctrl+ [.
источник
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
. После четвертой обратной косой черты есть лишний х.\[...\]
вторую, иначе команды во второй строке перезапишут первую строку. PS1 = '[\ e [33; 1m] \ u @ \ h: [\ e [31m] \ W \ e [0m \ $'ls --color=always
Не работает. Подход @Michael Durrant лучше для этого:ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
Я также использую:
И если вам нравится раскрашивать подсказки, вам могут пригодиться определенные цветовые переменные:
И тогда моя подсказка выглядит примерно так:
$ (vcprompt) вызывает скрипт python в моем ~ / sbin, который печатает информацию контроля версий о текущем пути. Включает поддержку Mercurial, Git, Svn, Cvs и т. Д. У автора скрипта есть источник здесь .
Это полный источник моей быстрой настройки:
источник
$LSCOLORS
и$CLICOLOR
для BSD Ls. GNU ls (Linux) использует$LS_COLORS
другой синтаксис. Поскольку GNU чувствует себя как дома для меня, я использую,LSCOLORS=exgxfxDacxBaBaCaCaeaEa
чтобы имитировать цвета GNU на BSD.grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
.bashrc
найти файл, чтобы изменения вступили в силу. Вы можете сделать это с помощью следующей команды.source /path/to/.bashrc
grep
иls
уже упоминались выше, если вы хотите много больше цветов проверить Generic Coloriser , его первоначальная цель состояла в том, чтобы раскрасить лога, но прямо из коробки также окрашиваетping
,traceroute
,gcc
,make
,netstat
,diff
,last
,ldap
, иcvs
.Это легко расширить, если вы знаете регулярные выражения. Я добавил
ps
иnmap
к списку (если вы попадете в,grc
я буду более чем рад поделиться .conf файлами для этих двух инструментов)(Между прочим, чтобы установить его через
synaptic
,pacman
и вам, возможно, повезет больше в поиске "grc")источник
grc
теперь поддерживаетps
по умолчанию. Я был бы заинтересован в вашихnmap
раскрасках. См. Также мой ответ для наложения всех этих имен таким образом, что они будут поглощать новые команды при обновлении grc.Я оттачивал свой .bashrc на протяжении многих лет, чтобы работать как на OSX, так и на Ubuntu.
Я также уменьшил его размер до 28 строк с помощью компактных операторов условия.
С этим мое приглашение PS1 выглядит как:
со временем красным, имя пользователя зеленым, имя машины светло-синим, pwd темно-синим и git ветвь желтым.
Особенность моей подсказки PS1:
_
между ними (этоpwd sed
часть LOCATION).Соответствующие строки из моего
.bashrc
файла:Для ls с цветами, когда они доступны, и без ошибок, когда нет (то есть OSX):
источник
ls
OS X, но это делается с помощьюexport CLICOLOR=1
.ls
в MacOS 10. Ответ также ошибочен, поскольку строки подсказок здесь на самом деле ошибочны. Они не правильно балансировать\[
и\]
, и возникали проблемы , по крайней мере , одного человека копирования этого ответа .Цвета для справочных страниц ( подробнее ):
Цвета для grep (
1;32
ярко-зеленый, см. Другие посты здесь для других цветов):Больше цветов для GNU ls :
Установите
grc
( Generic Colouriser ) и добавьте его к своим псевдонимам:Цвета для различий : слишком много содержимого для функции, используйте скрипт и добавьте в псевдоним его файл rc (необязательно, если вы установили
grc
):Цвета для Bash :
источник
PSWD()
Раньше моя функция была POSIX-совместимой, но намного проще, используя обработку подстрок bash / zsh. Смотрите редакцию 6 для версии POSIX, которая включает в себя множество вопросительных знаков и совсем не адаптируется к ширине терминала. Я не обновлял скриншот, но это всего лишь небольшое изменение при ширине 80 символов.CLICOLOR=1
у меня не работает с FreeBSD 11.2CLICOLOR=1 ls
следует сделать то же самое, что иls -G
при использовании BSD (ls -g
на старых BSD). Еслиls --color
работает (без ошибок), вы используетеls
команду GNU и$CLICOLOR
игнорируется.~/.bashrc
изменения вступили в силу, вы должны загрузить их . Либо запуститьsource ~/.bashrc
или начать новый сеанс Баша (запустить терминал или запуститьbash
).Установите смелый / цветной запрос. От cyberciti.biz и BASFAQ
Мне также удалось найти настройки цвета, которые широко поддерживаются и которые не печатают символы гоблидов в старых средах (даже FreeBSD4!), И, кажется, работают нормально, если TERM = vt100, xterm, xterm-color. (По большей части). Из моего .bashrc:
источник
Для команды ls есть хороший инструмент для настройки цветов - http://geoff.greer.fm/lscolors/
источник
То, что еще не было сказано здесь:
Чтобы раскрасить вывод ваших компиляций с помощью gcc, есть colorgcc от Johannes Schlüter
Для раскрашивания логов есть мультитейл
Чтобы раскрасить любой стандартный вывод, я собрал xcol
Я лично использую их из инструмента xcol.
Я использую эти переменные в моих сценариях, как так
Мне также нравится эта маленькая функция ColoredEcho (находится в Stack Overflow)
Извините, запрещено размещать больше ссылок
источник
Я предлагаю вам проверить ZSH и его плагин oh-my-zsh, который имеет одну из самых мощных консольных функций, которые я видел. Одним из них является выбор темы для вашего терминала. Это пример моей темы ... В tty цвета не такие теплые, но они такие же, как на этой картинке ... В любом случае, вам это понравится!
источник
emulate bash
свой .zprofile или .zshrc файлы. Для тех, кто работает с расширенными функциями в BASH, есть много тонкостей, которые вас укусят. BASH лучше ш=~
оператор может укусить вас, путь ЗШ обрабатывает массивы могут укусить вас, и т.д. После использования ЗШ / Oh-My-ЗШ в течение 9 месяцев , у меня было достаточно. Я использовал собственную тему, которую я написал сам, я перенес ее на BASH и написал свою собственную строку подсказки git, и я никогда не оглядывался назад. Теперь я больше не беспокоюсь о переносимостиДля просмотра различий в цвете используйте colordiff .
Передайте любой вывод diff-формата в colordiff:
Это включает в себя некоторые из альтернативных форматов diff, например
-y
(рядом).В качестве альтернативы, если он вызывается автономно (без каких-либо вложений в него), он действует как обертка вокруг 'diff' и окрашивает вывод. Следовательно, у меня есть это в моем .bashrc, для псевдонима 'diff' к colordiff.
источник
.bashrc
примере отсутствует финалfi
, и его можно преобразовать в однострочную команду:type colordiff &> /dev/null && alias diff='colordiff'
Некоторое оформление текста (выделено жирным шрифтом) позволяет легко различать корневую и некорневую оболочку. Для Zsh:
Для Баш:
источник
bash
.Я просто удивился тому же. У меня свой подход, но я ищу альтернативы.
Я пишу bash-оболочки вокруг вызовов программ и передаю их результаты
sed
. Что мне нравится, такsed
это то, что он будет изменять и отображать каждую строку сразу => не слишком много буферизации. Однако мне не нравится, что при каждом вызове упакованной программыsed
код анализируется и компилируется.Например, это то, что я делаю, чтобы раскрасить вывод
ip
:источник
Для настройки подсказки у меня это есть в моем файле .bashrc.
Это дает мне подсказку, которая выглядит примерно так:
Рабочий каталог в зеленом. И имя пользователя будет жирным и голубым, если я не запускаю оболочку
sudo
, в этом случае имя пользователя («root») отображается жирным шрифтом и красным цветом.Мне лично очень нравится хранить символы управления форматированием в переменных, потому что это облегчает чтение кода для настройки приглашения. Это также делает редактирование строки намного проще.
Причина, по которой я использую,
tput
заключается в том, что он должен быть более универсально поддерживаемым, чем странные033[01;31m\]
последовательности. Кроме того, в качестве дополнительного бонуса, если вы сделаете этоecho $PS1
в приглашении, вы увидите необработанное приглашение с цветами вместо этих неразборчивых последовательностей управления.источник
Вы также можете попробовать проект, который помогает в раскраске скриптов, который называется ScriptEchoColor в source forge: http://scriptechocolor.sourceforge.net/
напр .:
Автоматические цвета настраиваются.
Вот пример, сделанный с ним:
источник
Отличный универсальный инструмент Python для окраски вывода команд - ' colout '
Вы даете ему регулярное выражение с N группами, за которым следует разделенный запятыми список из N цветов. Любой текст, соответствующий группе, будет отображаться соответствующим цветом.
Так, например, если вы смотрите на некоторые результаты теста:
тогда вы можете украсить его:
Посмотрите, как у моего регулярного выражения есть три группы (круглые скобки), за которыми следуют три цвета (и, возможно, три стиля), но я использовал сокращение, чтобы установить все цвета на «жирный», поэтому группа «черный», которая соответствует тексту в скобках выходит темно-серым.)
Обратите также внимание на то, как мне пришлось добавить
2>&1
в конец вызова Python, потому что вывод unittest находится на stderr, поэтому я перенес его в stdout, чтобы можно было передать его в colout.Как правило, это настолько просто в использовании, что я часто создаю новые вызовы colout на лету и повторно использую или изменяю их из своей истории командной строки.
Единственным недостатком является то, что он поставляется как пакет Python, а не как отдельный исполняемый файл, поэтому вам нужно установить его с помощью pip, или
sudo python setup.py install
.источник
Я считаю Solarized полезным. Это аккуратный проект с однородными цветами для множества приложений.
http://ethanschoonover.com/solarized https://github.com/altercation/solarized
источник
Я использую цветную обертку .
Это почти незаметно, но как только я обнаружил, что ps в интерактивной оболочке возвращает различный вывод, сравнивая ps в канале
источник
Для Mac вы можете использовать следующие, как указано здесь
источник
если вы хотите сделать свой
vim
красочный, как я, я предлагаю вам сделать два шага:источник
Если bash - ваш выбор, я рекомендую oh-my-bash . Если zsh - ваш выбор, я рекомендую oh-my-zsh . Оба поддерживают раскраску вашего терминала и разные выходные данные.
источник
Я хотел бы смиренно рекламировать свою недавнюю публикацию о
ta
или textattr , библиотека и командной строки инструмент , который стремится сделать добавление цвета и атрибуты для украшения терминал вывода вашей программы легче переводить удобочитаемых спецификации в управляющие коды ANSI.Например:
echo "The Git repo $(ta yellow)${CUR_REPO}$(ta off) is $(ta green)up-to-date$(ta off)"
или еще короче
echo "The Git repo $(ta y)${CUR_REPO}$(ta f) is $(ta g)up-to-date$(ta f)"
или альтернативный:
tawrite "The Git repo " @y ${CUR_REPO} @f " is " @g up-to-date @f "\n"
даст вам что-то вроде:
В настоящее время эта библиотека может использоваться на четырех языках C, C ++, D и Python, кроме использования в командной строке из вашей любимой оболочки.
Обратите внимание, что он не окрашивает автоматически выходные данные других программ. Это скорее утилита, которая поможет вам не запоминать заумные коды. Вам нужно использовать только очевидные названия цветов или их легко запоминающиеся сокращения rgb cmyk w (hite) (of) f .
Для более подробной информации посетите репозиторий textattr .
источник