окраска вашего терминала и среды shell?

<p>я провожу большую часть своего времени, работая в среде unix и используя эмуляторы терминала. я пытаюсь использовать цвет в командной строке, потому что цвет делает вывод более полезным и интуитивно понятным.</p><p>какие варианты существуют, чтобы добавить цвет в мою терминальную среду? какие трюки вы используете? с какими подводными камнями вы столкнулись?</p><p>к сожалению, поддержка цвета варьируется в зависимости от типа терминала, ос, настроек term, утилит, ошибочных реализаций и т.д.</p><p>вот несколько советов из моей настройки после долгих экспериментов:</p><ol> <li>я склонен устанавливать <code>term=xterm-color</code>, который поддерживается на большинстве хостов (но не на всех).</li> <li>я работаю на разных хостах, разных версиях ос и т.д. я использую все, от macos x, ubuntu linux, rhel/centos/scientific linux и freebsd. я стараюсь сделать вещи простыми и общими, если это возможно.</li> <li>я делаю кучу работы, используя gnu <code>screen</code>, что добавляет еще один интересный уровень.</li> <li>многие ос устанавливают такие параметры, как <code>dircolors</code> и по умолчанию, и я не хочу изменять это на сотне разных хостов. поэтому я стараюсь придерживаться значений по умолчанию. вместо этого я настраиваю цветовую конфигурацию моего терминала.</li> <li> <p>используйте цвет для некоторых <a href="http://www.debian.org/doc/manuals/reference/ch09.en.html#\_colorized\_commands">nix-команд</a> (<code>ls</code>, <code>grep</code>, <code>less</code>, <code>vim</code>) и <a href="http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/">bash prompt</a> . кажется, что эти команды используют стандарт " <a href="http://en.wikipedia.org/wiki/ansi\_escape\_code">escape-последовательности ansi</a> ". например:</p> <pre><code>alias less='less --raw-control-chars' export ls\_opts='--color=auto' alias ls='ls ${ls_opts}'  я отправлю свое .bashrc и ответить на мой собственный вопрос jeopardy style.

вот несколько вещей, которые вы можете сделать:<strong> редакторы + код </strong> многие редакторы имеют поддержку подсветки синтаксиса. vim и emacs по умолчанию включены. вы также можете <a href="https://askubuntu.com/questions/90013/how-do-i-enable-syntax-highlighting-in-nano">включить его в nano .вы также можете синтаксически выделить код на терминале, используя <a href="http://pygments.org/faq/#how-can-i-use-pygments">pygments в качестве инструмента командной строки.<strong> grep </strong> grep --color=auto выделяет все совпадения. вы также можете использовать export grep_options='--color=auto' чтобы сделать его постоянным без псевдонима. если вы используете --color=always, это будет <a href="http://linuxcommando.blogspot.com/2007/10/grep-with-color-output.html">использовать цвет, даже когда он используется , что сбивает с толку.<strong> ls </strong>ls --color=alwaysцвета указаны по:export ls_colors='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33' (подсказка: dircolors может быть полезным)<strong> ps1 </strong> вы можете настроить ps1 (shell prompt) на использование цветов. например:ps1='e[33;1mu@h: e[31mwe[0m$ ' </code></pre><p>будет производить ps1, как:</p><p>[желтый] lucas @ ubuntu: [красный] ~ [обычный] $вы можете стать действительно творческим с этим. как идея:ps1='e[se[0;0he[1;33mh tne[1;32mthis is my computere[u[u@h: w]$ ' </code></pre><p>ставит панель в верхней части вашего терминала с некоторой случайной информацией. (для достижения наилучших результатов также используйте <code>alias clear="echo -e '\e[2j\n\n'"</code>.)</p><p><strong> избавление от escape-последовательностей </strong></p><p>если что-то застряло при выводе цвета, когда вы этого не хотите, я использую эту строку <code>sed</code>, чтобы убрать escape-последовательности:</p><pre><code>sed "s/\[^[[0-9;]*[a-za-z]//gi" </code></pre><p>если вы хотите более аутентичный опыт, вы также можете избавиться от строк, начинающихся с <code>\e[8m</code>, который указывает терминалу скрыть текст. (широко не поддерживается.)</p><pre><code>sed "s/^\[^[8m.*$//gi" также обратите внимание, что эти ^ [s должны быть действительными, буквальными ^ [s. вы можете ввести их, нажав ^ v ^ [в bash, то есть ctrl + v, ctrl + [,.

я также использую:export term=xterm-color export grep_options='--color=auto' grep_color='1;32' export clicolor=1 export lscolors=exfxcxdxbxegedabagacad и если вам нравится раскрашивать подсказки, вам могут пригодиться определенные цветовые переменные:export color_nc='e[0m' # no color export color_white='e[1;37m' export color_black='e[0;30m' export color_blue='e[0;34m' export color_light_blue='e[1;34m' export color_green='e[0;32m' export color_light_green='e[1;32m' export color_cyan='e[0;36m' export color_light_cyan='e[1;36m' export color_red='e[0;31m' export color_light_red='e[1;31m' export color_purple='e[0;35m' export color_light_purple='e[1;35m' export color_brown='e[0;33m' export color_yellow='e[1;33m' export color_gray='e[0;30m' export color_light_gray='e[0;37m' и тогда моя подсказка выглядит примерно так:case $term in xterm*|rxvt*) local titlebar='\[\033]0;\u ${new_pwd}007]' ;; ) local titlebar="" ;; esac local uc=$color\_white # user's color [ $uid -eq "0" ] && uc=$color\_red # root's color ps1="$titlebarn[${uc}\]\u \[${color_light_blue}]${pwd} \[${color_black}]$(vcprompt) \n\[${color_light_green}]→[${color\_nc}\] " </code></pre><p>$ (vcprompt) вызывает сценарий python в моем ~/sbin), который печатает информацию контроля версий о текущем пути. он включает поддержку mercurial, git, svn, cvs и т. д. автор скрипт имеет <a href="https://gist.github.com/kriswill/83c1aad72b961632866fc012f2578dea">источник здесь . <a href="https://i.stack.imgur.com/vktpl.png"><img src="https://i.stack.imgur.com/vktpl.png" alt="bash prompt screenshot"> это <a href="https://github.com/kriswill/dotfiles/blob/master/bash/prompt">полный исходный код моей конфигурации подсказок:

grep и ls уже упоминалось, если вы хотите проверить намного больше цветов <a href="http://korpus.juls.savba.sk/~garabik/software/grc.html">generic coloriser , его первоначальная цель состояла в том, чтобы раскрасить лог-файлы, но прямо из также он раскрашивает ping, traceroute, gcc, make, netstat, diff, last, ldap и cvs.это легко расширить, если вы знаете регулярные выражения. я добавил ps и nmap в список (если вы попадете в grc, я буду более чем рад поделиться файлами .conf для этих двух инструментов)(кстати, чтобы установить его через synaptic, pacman, и вам, возможно, повезет больше в поиске "grc")

на протяжении многих лет я оттачивал свой .bashrc для работы как с osx, так и с ubuntu. я также уменьшил его размер до 28 строк с компактными условиями. с ним моя ps1 prompt выглядит так: <img src="https://i.stack.imgur.com/xnozm.png" alt="enter image description here">со временем красным, имя пользователя зеленым, имя машины светло-синим, pwd темно-синим и git ветвь желтым.особенность моего ps1 prompt: показывает ветку мерзавца! длинные пути к каталогам (более 6 элементов) "обрезаются", чтобы показать верхние 3 и нижние 3 каталоги с помощью _ между тем (это pwd sed часть место). возврат каретки в конце, так что подсказка всегда слева! соответствующие строки из моего .bashrc файл:git_branch () { git branch 2> /dev/null | sed -e '/^[^]/d' -e 's/ (.)/1/'; } host='033[02;36m]h'; host=' '$host time='\033[01;31m\]\t \033[01;32m\]' location=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1\_\2#g"`' branch=' \033[00;33m\]$(git_branch)[033[00m]n$ ' ps1=$time$user$host$location$branch ps2='[033[01;36m]>' для ls с цветами, когда они доступны, и без ошибок, когда нет (т.е. osx):ls --color=al > /dev/null 2>&1 && alias ls='ls -f --color=al' || alias ls='ls -g' 

цвета для <strong> справочных страниц </strong> ( <a href="https://unix.stackexchange.com/q/108699/docs-for-less-termcap-vars">более подробно ):function _colorman() { env  less_termcap_mb=$(printf "\e[1;35m") \ less\_termcap\_md=$(printf "e[1;34m")  less_termcap_me=$(printf "\e[0m") \ less\_termcap\_se=$(printf "e[0m")  less_termcap_so=$(printf "\e[7;40m") \ less\_termcap\_ue=$(printf "e[0m")  less_termcap_us=$(printf "\e[1;33m") \ "$@" } function man() { _colorman man "$@"; } function perldoc() { command perldoc -n less "$@" |man -l -; } цвета для <strong> grep </strong> (1;32 ярко-зеленый, см. другие посты здесь для других цветов):grep_opts='--color=auto' # for aliases since $grep\_options is deprecated grep\_color='1;32' # (legacy) bright green rather than default red grep\_colors="ms=$grep_color" # (new) matching text in selected line = green alias grep='grep $grep\_opts' alias egrep='egrep $grep_opts' alias fgrep='fgrep $grep\_opts' </code></pre><p>другие цвета для <strong> gnu ls </strong>:</p><pre><code># use the config at ~/.dircolors if it exists, otherwise generate anew eval "$( dircolors --sh $(ls -d ~/.dircolors 2>/dev/null) )" # usage: \_ls\_colors\_add base new [new...] # have ls color given new extensions the way base extension is colored \_ls\_colors\_add() { local base\_color="${ls_colors##:?.$1=}" new if [ "$ls_colors" != "$base\_color" ]; then base\_color="${base_color%%:}" shift for new in "$@"; do if [ "$ls_colors" = "${ls\_colors#*.$new=}" ]; then ls_colors="${ls\_colors%%:}:*.$new=$base\_color:" fi done fi export ls\_colors } \_ls\_colors\_add zip jar xpi # archives \_ls\_colors\_add jpg ico jpg png webp # images \_ls\_colors\_add ogg opus # audio (opus now included by default) clicolor=1 # bsd auto-color trigger (like ls -g but for everything) if ls -ld --color=auto / >/dev/null 2>&1 then alias ls="ls -ph --color=auto" else alias ls="ls -ph" fi </code></pre><p>установите <strong> <code>grc</code> </strong> ( <a href="http://korpus.juls.savba.sk/~garabik/software/grc.html">generic colouriser</a> ) и добавьте его в свои псевдонимы:</p><pre><code># using this as a variable allows easier calling down lower export grc='grc -es --colour=auto' # loop through known commands plus all those with named conf files for cmd in g++ head ld ping6 tail traceroute6 `locate grc/conf.`; do cmd="${cmd##grc/conf.}" # we want just the command # if the command exists, alias it to pass through grc type "$cmd" >/dev/null 2>&1 && alias "$cmd"="$grc $cmd" done # this needs run-time detection. we even fake the 'command not found' error. configure() { if [[ -x ./configure ]]; then colourify ./configure "$@" else echo "configure: command not found" >&2 return 127 fi } # grc plus ls awesomeness (assumes you have an alias for ls) unalias ll 2>/dev/null if ls -ld --color=always / >/dev/null 2>&1; then gnu\_ls="--color=always"; fi ll() { if [[ -t 1 ]] || [[ -n "$clicolor_force" ]] then colourify ls -l $gnu\_ls "$@" else ls -l "$@" fi } </code></pre><p>цвета для <strong> diff </strong>: слишком много содержимого для функции, используйте сценарий и добавьте псевдоним в файл rc (ненужно, если вы установили <code>grc</code> ):</p><pre><code>#!/usr/bin/perl use strict; use warnings; open (diff, "-|", "diff", @argv) or die $!; my $ydiff = 1; while (<diff>) { if (not -t 1) { print; next; } chomp; $ydiff = 0 if /^[ <>@+-]/ or ($. == 1 && /^\d+[a-z]{1,5}\d+$/); my $color = ""; if (! $ydiff && /^[@+-<>]/) { $color = (/^[<-](?!--$)/ ? 1 : /^[+>]/ ? 2 : 5); } elsif ($ydiff && /\t {6}([<|>])(?:\t|$)/) { $color = ($1 eq "<" ? 1 : $1 eq ">" ? 2 : 4); } $color ? printf ("e[1;3%dm%se[0;0mn",$color,$_) : print "$\_\n"; } close diff; </code></pre><p>цвета для <strong> bash prompt </strong>:</p><pre><code># shorten home dir, cygwin drives, paths that are too long if [ -d /cygdrive ] && uname -a |grep -qi cygwin; then cygwin\_os=1; fi function pswd() { local p="$" space a b cols="${columns:-`tput cols 2>/dev/null || echo 80`}" p="${p/$home/\~}" # shrink home down to a tilde if [ -n "$cygwin_os" ] && [ "${p#/cygdrive/?/}" != "$p" ]; then p="${p:10:1}:${p:11}" # /cygdrive/c/hi -> c:/hi fi space="$((${#user}+${#hostname}+6))" # width w/out the path if [ "$cols" -lt 60 ]; then echo -n "$n "; space=-29; p="$p$n\b"; fi if [ "$cols" -lt "$((space+${#p}+20))" ]; then # < 20 chars for the command a=$(( (cols-20-space)/4 )) # a quarter of the space (-20 for cmd) if [ $a -lt 4 ]; then a=4; fi # 4+ chars from beginning b=$(( cols-20-space-a*2 )) # half (plus rounding) of the space if [ $b -lt 8 ]; then b=8; fi # 8+ chars from end p="${p:0:$a}..${p: -$b}" fi echo "$p" } psc() { echo -ne "\[\033[${1:-0;38}m]"; } pr="0;32" # default color used in prompt is green if [ "$(id -u)" = 0 ]; then sudo=41 # root is red background elif [ "$user" != "${sudo\_user:-$user}" ]; then sudo=31 # not root, not self: red text else sudo="$pr" # standard user color fi prompt\_command='[ $? = 0 ] && ps1=${ps1[1]} || ps1=${ps1[2]}' psbase="$(psc $sudo)u$(psc $pr)@h $(psc 33)\$(pswd w)" ps1[1]="$psbase$(psc $pr)\$ $(psc)" ps1[2]="$psbase$(psc 31)\$ $(psc)" ps1="${ps1[1]}" unset sudo pr psbase <img src="https://i.stack.imgur.com/nlbyb.png" alt="demo of bash prompt">

установите жирный/цветной подсказки. от <a href="http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/">cyberciti.biz и <a href="http://mywiki.wooledge.org/bashfaq/037">bashfaq # 'tput bold' will work regardless of the foreground and background colors. # place the tput output into variables, so they are only execd once. bold=$(tput bold) # this could also be a color. reset=$(tput sgr0) export ps1="u@[$bold\]\h\[$reset]:w $ " </code></pre><p>мне также удалось найти настройки цвета, которые широко поддерживаются и которые не печатают символы гоблидов в старых средах (даже freebsd4!), и, кажется, работают нормально, если term = vt100, xterm, xterm-color. (по большей части). из моего .bashrc:</p><pre><code># set some options, based on the os os=`uname -s` case "$os" in "sunos" ) # solaris ls doesn't allow color, so use special characters ls_opts='-f' alias ls='ls ${ls\_opts}' ;; "linux" ) # gnu ls supports colors! # see dircolors to customize colors export ls\_opts='--color=auto' alias ls='ls ${ls_opts}' # get color support for 'less' export less="--raw-control-chars" # use colors for less, man, etc. [[ -f ~/.less_termcap ]] && . ~/.less_termcap export grep_options="--color=auto" ;; "darwin"|"freebsd") # most freebsd & apple darwin supports colors export clicolor=true # get color support for 'less' export less="--raw-control-chars" # use colors for less, man, etc. [[ -f ~/.less_termcap ]] && . ~/.less_termcap export grep_options="--color=auto" ;;  ) echo "unknown os [$os]" ;; esac </code></pre>

<p>для команды ls есть хороший инструмент для настройки цветов - <a href="http://geoff.greer.fm/lscolors/">http://geoff.greer.fm/lscolors/</a> </p>

<p>то, что еще не было сказано здесь:</p><p>чтобы раскрасить вывод ваших компиляций с помощью gcc, есть colorgcc от johannes schlüter</p><p>для раскрашивания логов есть мультитейл</p><p>чтобы раскрасить любой стандартный вывод, я собрал <a href="https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/">xcol</a> </p><p> <a href="https://i.stack.imgur.com/scezk.jpg"><img src="https://i.stack.imgur.com/scezk.jpg" alt="xcol example"></a> </p><p>я лично использую их из инструмента xcol.</p><pre><code>#normal=$(tput sgr0) # normal text normal=$'\e[0m' # (works better sometimes) bold=$(tput bold) # make colors bold/bright red="$bold$(tput setaf 1)" # bright red text green=$(tput setaf 2) # dim green text fawn=$(tput setaf 3); beige="$fawn" # dark yellow text yellow="$bold$fawn" # bright yellow text darkblue=$(tput setaf 4) # dim blue text blue="$bold$darkblue" # bright blue text purple=$(tput setaf 5); magenta="$purple" # magenta text pink="$bold$purple" # bright magenta text darkcyan=$(tput setaf 6) # dim cyan text cyan="$bold$darkcyan" # bright cyan text gray=$(tput setaf 7) # dim white text darkgray="$bold"$(tput setaf 0) # bold black = dark gray text white="$bold$gray" # bright white text я использую эти переменные в моих сценариях, как такecho "${red}hello ${yellow}this is ${green}coloured${normal}" мне также нравится эта маленькая функция coloredecho (находится в stack overflow)function coloredecho(){ local exp=$1; local color=$2; if ! [[ $color =~ '^[0-9]$' ]] ; then case $(echo $color | tr '[:upper:]' '[:lower:]') in black) color=0 ;; red) color=1 ;; green) color=2 ;; yellow) color=3 ;; blue) color=4 ;; magenta) color=5 ;; cyan) color=6 ;; white|) color=7 ;; # white or invalid color esac fi tput setaf $color; echo $exp; tput sgr0; } coloredecho "this text is green" green извините, запрещено размещать больше ссылок

я предлагаю вам проверить <a href="http://en.wikipedia.org/wiki/z_shell"> zsh  и его плагин <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh , который имеет одну из самых мощных консольных функций, которые я видел , одним из них является выбор темы для вашего терминала. это пример моей темы ... в tty цвета не такие теплые, но они такие же, как на этой картинке ... в любом случае, вам это понравится!<img src="https://i.stack.imgur.com/knxq7.png" alt="enter image description here">

для просмотра различий в цвете используйте <a href="http://www.colordiff.org/">colordiff .sudo apt-get install colordiff передайте любой вывод diff-формата в colordiff: <a href="http://www.colordiff.org/screenshots.html"><img src="https://i.stack.imgur.com/igie9.jpg" alt="output of diff piped into colordiff"> это включает в себя некоторые из альтернативных форматов diff, таких как -y (бок о бок.)в качестве альтернативы, если он вызывается автономно (без каких-либо вложений), он действует как обертка вокруг 'diff' и окрашивает вывод. следовательно, у меня есть это в моем .bashrc, для псевдонима 'diff' к colordiff.# if colordiff is installed, use it if type colordiff &>/dev/null ; then alias diff=colordiff 

для настройки подсказки у меня это есть в моем файле .bashrc.#set variables for foreground colors fgred=$(tput setaf 1) ; fggreen=$(tput setaf 2) ; fgblue=$(tput setaf 4) fgmagenta=$(tput setaf 5) ; fgyellow=$(tput setaf 3) ; fgcyan=$(tput setaf 6) fgwhite=$(tput setaf 7) ; fgblack=$(tput setaf 0) #set variables for background colors bgred=$(tput setab 1) ; bggreen=$(tput setab 2) ; bgblue=$(tput setab 4) bgmagenta=$(tput setab 5) ; bgyellow=$(tput setab 3) ; bgcyan=$(tput setab 6) bgwhite=$(tput setab 7) ; bgblack=$(tput setab 0) #set variables for font weight and text decoration b=$(tput bold) ; u=$(tput smul) ; c=$(tput sgr0) #note: ${c} clears the current formatting if [[ $user = "root" ]]; then ps1="${b}${fgred}\u${c}@h(s): ${fggreen}\w${c} > " else ps1="${b}${fgcyan}u${c}@\h(\s): ${fggreen}w${c} > " fi </code></pre><p>это дает мне подсказку, которая выглядит примерно так:</p><pre><code>user@host(bash): ~/bin > </code></pre><p>рабочий каталог в зеленом. и имя пользователя будет жирным и голубым, если я не запустил оболочку с <code>sudo</code>, в этом случае имя пользователя ("root") будет выделено жирным и красным цветом.</p><p>мне лично очень нравится хранить символы управления форматированием в переменных, потому что это облегчает чтение кода для установки подсказки. это также облегчает редактирование подсказки <em> </em>.</p><p>причина, по которой я использую <code>tput</code>, заключается в том, что он должен поддерживаться более универсально, чем странный <code>033[01;31m\]</code> последовательности. кроме того, в качестве дополнительного бонуса, если вы делаете <code>echo $ps1 в приглашении вы увидите необработанное приглашение с <strong>colors</strong> вместо этих неразборчивых последовательностей управления.

некоторое оформление текста (жирный) позволяет легко различать root и некорневую оболочку. для zsh:if test $uid = 0 then ps1="%b${ps1}%b " fi для баш:if test $uid = 0 then ps1="\033[1m${ps1}033[0m" fi 

я просто удивился тому же. у меня свой подход, но я ищу альтернативы.я пишу bash-оболочки вокруг вызовов программ и передаю их результаты через sed. что мне нравится в sed, так это то, что он будет изменять и отображать каждую строку сразу => не слишком много буферизации. однако мне не нравится, что при каждом вызове упакованной программы код sed анализируется и компилируется.например, это то, что я делаю, чтобы раскрасить вывод ip:# # colorcodes # normal=echo -e '033[0m' red=echo -e '033[31m' green=echo -e '033[0;32m' lgreen=echo -e '033[1;32m' blue=echo -e '033[0;34m' lblue=echo -e '033[1;34m' yellow=echo -e '033[0;33m' # # command: ip # highlight ip addresses, default route and interface names # ip4=$green ip6=$lblue iface=${yellow} default\_route=$lblue ip_cmd=$(which ip) function colored\_ip() { ${ip_cmd} $@ | sed \ -e "s/inet [^ ]\+ /${ip4}&${normal}/g"\ -e "s/inet6 [^ ]\+ /${ip6}&${normal}/g"\ -e "s/^default via .*$/${default\_route}&${normal}/" -e "s/^([0-9]+: +)([^ t]+)/1${iface}\2${normal}/" } alias ip='colored_ip' 

вы можете использовать мой cf для окрашивания имен файлов в командной строке, это быстрый маленький основанный на awk colorizer, который работает через каналы - раскраска имен файлов в truecolor srgb.он имеет ярко окрашенную конфигурацию по умолчанию и, в отличие от ls, не страдает от снижения производительности за добавление новых цветов. (ls должен сканировать всю строку ls_colors для каждого промаха). <a href="https://github.com/adamdanischewski/cf">https://github.com/adamdanischewski/cf <img src="https://raw.githubusercontent.com/adamdanischewski/cf/assets/cf_usage_ss_1.png" alt="cf usage"><img src="https://raw.githubusercontent.com/adamdanischewski/cf/assets/cf_ss_1.png" alt="cf screenshot">

я считаю solarized полезным. это аккуратный проект с однородными цветами для множества приложений. <a href="http://ethanschoonover.com/solarized">http://ethanschoonover.com/solarized <a href="https://github.com/altercation/solarized">https://github.com/altercation/solarized 

отличный универсальный  python  инструмент для окраски вывода команд: ' <a href="http://nojhan.github.io/colout/">colout 'вы даете ему регулярное выражение с n группами, за которым следует разделенный запятыми список из n цветов. любой текст, соответствующий группе, будет отображаться соответствующим цветом.так, например, если вы смотрите на некоторые результаты теста:python -m unittest discover -v  <a href="https://i.stack.imgur.com/nd0le.png"><img src="https://i.stack.imgur.com/nd0le.png" alt="uncolored output of some python unittests"> тогда вы можете украсить его:python -m unittest discover -v 2>&1 | colout '(.error$)|(.*fail$)|((.))' red,yellow,black bold  <a href="https://i.stack.imgur.com/tqdr1.png"><img src="https://i.stack.imgur.com/tqdr1.png" alt="colored output of some python unittests"> посмотрите, как у моего регулярного выражения есть три группы (круглые скобки), за которыми следуют три цвета (и, возможно, три стиля), но я использовал сокращение, чтобы установить все цвета на "жирный", поэтому группа "черный", которая соответствует тексту в скобках выходит темно-серым.)обратите внимание, как я должен был добавить 2>&1 до конца вызова python, потому что вывод unittest находится на stderr, поэтому я перенес его в stdout, чтобы можно было передать его в colout.как правило, это настолько просто в использовании, что я часто создаю новые вызовы colout на лету и повторно использую или изменяю их из своей истории командной строки.единственным недостатком является то, что он поставляется как python, а не автономный исполняемый файл, поэтому вам нужно установить его с помощью pip или sudo python setup.py install.

вы можете попробовать проект, который также помогает при раскрашивании скриптов, который называется scriptechocolor в source forge: <a href="http://scriptechocolor.sourceforge.net/">http://scriptechocolor.sourceforge.net/ напр .:echoc "@{lr}text output in light red" echoc "@{blgu}text outpus in blue, light green background and underlined" echoc "you @{lr} can @{blgu} mix @{-a} it all too" echoc -x "ls" #executes ls command and colorizes it automatically to be easy to be seen автоматические цвета настраиваются.вот пример, сделанный с ним: <img src="https://i.stack.imgur.com/z4ugw.png" alt="enter image description here">

я использую <a href="http://cwrapper.sourceforge.net/">цветная обертка .<blockquote> cw - это ненавязчивая оболочка цвета ansi реального времени для распространенных команд на основе unix в gnu/linux. cw предназначен для имитации среды выполняемых команд, так что, если человек наберет "du", "df", "ping" и т. д. в своей оболочке, он автоматически раскрасит вывод в реальном времени в соответствии с определением файл, содержащий желаемый формат цвета. cw поддерживает раскраску совпадений с подстановочными знаками, разметку токенов, колонтитулы, раскраски сценариев, окраски определений, зависящих от командной строки, и включает более 50 готовых файлов определений. </blockquote>это почти незаметно, но как только я обнаружил, что ps в интерактивной оболочке возвращает различный вывод, сравнивая ps в трубе.

если вы хотите сделать свой vim разноцветным, как и я, я предлагаю вам выполнить два шага: узнайте, как включить эту функцию, перейдя по этой ссылке: <a href="https://www.cyberciti.biz/faq/turn-on-or-off-color-syntax-highlighting-in-vi-or-vim/">включить цветную подсветку синтаксиса в vi или vim . <blockquote> ключевые шаги в ссылке:   отредактируйте файл ~/.vimrc, введя команду: <strong>  vi ~/.vimrc </strong>   добавьте следующую опцию: <strong>  синтаксис включен </strong>   сохраните и закройте файл   проверьте это с помощью команды vim: <strong>  vim foo.sh </strong>   </blockquote><ol start="2"> найдите цветовую схему, которая вам нравится, и используйте ее. схема, которую я использую: <a href="https://github.com/hdima/python-syntax">схема, которую я использую  

я хотел бы смиренно рекламировать <a href="https://github.com/jamadagni/textattr/">мою недавнюю публикацию of ta or <strong> textattr</strong>, библиотеку и инструмент командной строки, который призван сделать добавление цвета и атрибуты, чтобы украсить вывод терминала вашей программы, переводя понятные человеку спецификации в управляющие коды ansi.например:echo "the git repo $(ta yellow)${cur_repo}$(ta off) is $(ta green)up-to-date$(ta off)"</code></p><p>или еще короче</p><p><code>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"</code></p><p>даст вам что-то вроде:</p><p> <a href="https://i.stack.imgur.com/ecgep.png"><img src="https://i.stack.imgur.com/ecgep.png" alt="enter image description here"></a> </p><p>в настоящее время эта библиотека может использоваться на четырех языках c, c++, d и python, кроме использования командной строки из вашей любимой оболочки).</p><p>обратите внимание, что он не окрашивает автоматически результаты других программ. это скорее утилита, которая поможет вам не запоминать заумные коды. вам нужно использовать только очевидные названия цветов или их легко запоминающиеся <strong> rgb cmyk w(hite) (of) f</strong> сокращения.</p><p>для более подробной информации посетите <a href="https://github.com/jamadagni/textattr/">репозиторий textattr</a> .</p>

<p>для mac вы можете использовать следующее как указано <a href="https://superuser.com/questions/335471/using-colour-schemes-with-vim-and-putty">здесь</a> </p><pre><code>if [ "$term" = xterm ]; then term=xterm-256color; fi </code></pre>

<p>если вы выбрали bash, я рекомендую <a href="https://github.com/ohmybash/oh-my-bash">oh-my-bash</a> . если zsh - ваш выбор, я рекомендую <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a> . оба поддерживают раскраску вашего терминала и разные выходы.</p>