Раскрашивание среды терминала и оболочки?

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

Какие существуют варианты добавления цвета в мою терминальную среду? Какие трюки вы используете? Какие проблемы вы столкнулись?

К сожалению, поддержка цвета зависит от типа терминала, ОС, настройки TERM, утилиты, багги-реализаций и т. д.

Вот несколько советов по моей настройке после много экспериментов:

  1. Я стараюсь установить TERM = xterm-color, который поддерживается на большинстве хостов (но не для всех).
  2. Я работаю на нескольких разных хостах, разных версиях ОС и т. д. Я использую все, начиная от macOSâ € ŠX, Ubuntu Linux, RHEL /CentOS /Scientific Linux и FreeBSD. Я стараюсь держать вещи простыми и общими, если это возможно.
  3. Я выполняю кучу работы с помощью экрана GNU , который добавляет еще один класс удовольствия.
  4. Многие ОС задают такие вещи, как dircolors и по умолчанию, и я не хочу изменять это на сто разных хостов. Поэтому я стараюсь придерживаться настроек по умолчанию. Вместо этого я настраиваю конфигурацию цвета моего терминала.
  5. Используйте цвет для некоторых команд Unix (< code> ls, grep, less, vim) и подсказка Bash . Кажется, что эти команды используют стандартную « escape-последовательности ANSI ». Например:

    alias less = 'less --RAW-CONTROL-CHARS'
    export LS_OPTS = '- color = auto'
    alias ls = 'ls $ {LS_OPTS}
    

Я отправлю свой .bashrc и отвечу на мой собственный вопрос «Стиль опасности».

215 голосов | спросил Stefan Lasiewski 11 AM00000010000001231 2010, 01:21:12

18 ответов


100

Вот несколько вещей, которые вы можете сделать:

Редакторы + код
У многих редакторов есть поддержка подсветки синтаксиса. vim и emacs включить его по умолчанию. Вы также можете включить его под nano .

Вы также можете использовать код подсветки синтаксиса на терминале, используя Pygments как инструмент командной строки.

grep
grep --color = auto выделяет все совпадения. Вы также можете использовать export GREP_OPTIONS = '- color = auto', чтобы сделать его постоянным без псевдонима. Если вы используете - color = always, это будет использует цвет даже при работе с трубопроводом , что сбивает с толку.

Ls

ls --color = always

Цвета, определяемые:

export LS_COLORS = 'rs = 0: di = 01; 34: ln = 01; 36: mh = 00: pi = 40; 33'

(подсказка: dircolors может быть полезна)

PS1
Вы можете настроить PS1 (приглашение оболочки) на использование цветов. Например:

PS1 = '\ e [33; 1m \ u @ \ h: \ e [31m \ W \ e [0m \ $'

Производит PS1 как:

[желтый] lucas @ ubuntu: [красный] ~ [обычный] $

Вы можете стать очень креативными. Как идея:

PS1 = '\ e [s \ e [0; 0H \ e [1; 33m \ h \ t \ n \ e [1; 32m Это мой компьютер \ e [u [\ u @ \ h : \ w] \ $ '

Помещает панель в верхней части вашего терминала с некоторой случайной информацией. (Для получения наилучших результатов также используйте alias clear = "echo -e '\ e [2J \ n \ n'".)

Избавление от последующих последовательностей

Если что-то застряло, выдает цвет, когда вы этого не хотите, я использую эту строку sed, чтобы удалить escape-последовательности:

sed "s /\ [^ [[0-9;] * [a-zA-Z] //gi"

Если вам нужен более аутентичный опыт, вы также можете избавиться от строк, начинающихся с \ e [8m), который инструктирует терминал скрыть текст. (Не поддерживается широко.)

sed "s /^ \ [^ [8m. * $ //gi"

Также обратите внимание, что те ^ [s должны быть действительными, буквальными ^ [s. Вы можете ввести их, нажав ^ V ^ [в bash, то есть Ctrl + V , Ctrl + [ ,

ответил Lucas Jones 11 AM00000010000005531 2010, 01:28:55
63

Я также использую:

export TERM = xterm-color
export GREP_OPTIONS = '- color = auto' GREP_COLOR = '1; 32'
экспорт CLICOLOR = 1
экспорт LSCOLORS = ExFxCxDxBxegedabagacad

И если вам нравится раскрашивать подсказку, могут быть полезны определенные цветовые вары:

export COLOR_NC = '\ e [0m' # Нет цвета
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 # пользовательский цвет
[$ UID -eq "0"] & & & & UC = $ COLOR_RED # цвет корня

PS1 = "$ TITLEBAR \ n \ [$ {UC} \] \ u \ [$ {COLOR_LIGHT_BLUE} \] \ $ {PWD} \ [$ {COLOR_BLACK} \] \ $ (vcprompt) \ n \ [$ {COLOR_LIGHT_GREEN } \] â † '\ [$ {COLOR_NC} \] "

$ (vcprompt) вызывает скрипт python в моем ~ /sbin, который печатает информацию об управлении версиями текущего пути. Он включает поддержку Mercurial, Git, Svn, Cvs и т. Д. Автор сценария имеет источник здесь .

ответил Kris 11 AM00000020000003231 2010, 02:57:32
16

grep и ls уже были упомянуты, если вы хотите, чтобы еще много цветов проверялось Generic Colorizer , его первоначальной целью было раскрасить лог-файлы, но прямо из коробки он также раскрашивает ping, traceroute, gcc, make, netstat, diff, last, ldap и cvs.

Он легко расширяется, если вы знаете регулярные выражения. Я добавил в список ps и nmap (если вы попадаете в grc), я буду более чем рад поделиться файлами .conf для этих двух инструментов)

(Btw, чтобы установить его с помощью synaptic, pacman), и вам, возможно, повезло бы искать «grc»)

ответил Sygo 11 AM00000010000005931 2010, 01:57:59
9

Я оттачивал свой .bashrc на протяжении многих лет, чтобы работать как с OSX, так и с Ubuntu.
Я также уменьшил его по размеру до 28 строк с помощью операторов условий. С его помощью моя подсказка PS1 выглядит так: введите описание изображения здесь>> </p>

<p> со временем в красном, имя пользователя зеленое, имя машины в голубом, pwd в темно-синем и желтая ветвь желтого цвета. </p>

<p> Функция моей подсказки PS1: </p>

<ul>
<li> показывает ветвь git! </li>
<li> пути длинной директории (более 6 элементов) «обрезаны», чтобы показать верхние 3 и нижние 3 каталога с <code>_</code> между ними (это часть <code>pwd sed</code> LOCATION ). </li>
<li> возврат каретки в конце, чтобы подсказка всегда слева! </li>
</ul>
<p> Соответствующие строки из моего файла <code>.bashrc</code>: </p>

<pre><code>git_branch () {git branch 2> /dev /null | sed -e '/^ [^ *] /d' -e 's /* \ (. * \) /\ 1 /'; }
HOST = '\ 033 [02; 36m \] \ ч'; HOST = '' $ HOST
TIME = '\ 033 [01; 31m \] \ t \ 033 [01; 32m \]'
LOCATION = '\ 033 [01; 34m \] `pwd | sed

Для ls с цветами, когда они доступны, и ошибок нет (например, OSX):

ls --color = al> /dev /null 2 ​​& 1 & & alias ls = 'ls -F --color = al' || alias ls = 'ls -G'
ответил Michael Durrant 13 Jam1000000amTue, 13 Jan 2015 05:30:56 +030015 2015, 05:30:56
8

Установите жирный /цветной запрос. Из cyberciti.biz и BashFAQ

# 'tput bold' будет работать независимо от цветов переднего плана и фона.
# Поместите вывод tput в переменные, поэтому они только execd один раз.
bold = $ (tput bold) # Это также может быть цвет.
reset = $ (tput sgr0)
export PS1 = "\ u @ \ [$ bold \] \ h \ [$ reset \]: \ w \ $"

Мне также удалось найти поддерживаемые параметры цвета, которые не печатают символы gobbledygook в более старых средах (даже FreeBSD4!) и, кажется, работают нормально, если TERM = vt100, xterm, xterm-color. (По большей части). Из моего .bashrc:

# Установить некоторые параметры на основе ОС
OS = `uname -s`

case "$ OS" в
    «SunOS»)
        # Solaris ls не разрешает цвет, поэтому используйте специальные символы
        LS_OPTS = '- F'
        alias ls = 'ls $ {LS_OPTS}'
        ;;
    «Linux»)
        # GNU ls поддерживает цвета!
        # См. Dircolors для настройки цветов
        export LS_OPTS = '- color = auto'
        alias ls = 'ls $ {LS_OPTS}'

        # Получить поддержку цвета для "меньше"
        export LESS = "- RAW-CONTROL-CHARS"

        # Используйте цвета для меньшего, человека и т. Д.
        [[-f ~ /.LESS_TERMCAP]] & & & & , ~ /.LESS_TERMCAP

        export GREP_OPTIONS = "- color = auto"

        ;;
    "Дарвин" | "FreeBSD")

        # Большинство FreeBSD & Apple Darwin поддерживает цвета
        экспорт CLICOLOR = true
        # Получить поддержку цвета для "меньше"
        export LESS = "- RAW-CONTROL-CHARS"

        # Используйте цвета для меньшего, человека и т. Д.
        [[-f ~ /.LESS_TERMCAP]] & & & & , ~ /.LESS_TERMCAP

        export GREP_OPTIONS = "- color = auto"
        ;;
    *)
        echo "Неизвестная ОС [$ OS]"
        ;;
ESAC
ответил Stefan Lasiewski 11 AM00000010000003131 2010, 01:24:31
7

Цвета для man-страниц ( подробнее ):

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 -; }

Цвета для grep (1; 32 ярко-зеленый, см. другие сообщения здесь для других цветов):

GREP_OPTS = '- color = auto' # для псевдонимов, поскольку $ GREP_OPTIONS устарел
GREP_COLOR = '1; 32' # (устаревший) ярко-зеленый, а не красный по умолчанию
GREP_COLORS = "ms = $ GREP_COLOR" # (новый) Соответствие текста в выбранной строке = зеленый
alias grep = 'grep $ GREP_OPTS'
alias egrep = 'egrep $ GREP_OPTS'
alias fgrep = 'fgrep $ GREP_OPTS'

Дополнительные цвета для GNU ls :

# используйте config в ~ /.dircolors, если он существует, иначе генерируйте заново
eval "$ (dircolors --sh $ (ls -d ~ /.dircolors 2> /dev /null))"

# Использование: _ls_colors_add BASE NEW [NEW ...]
# Цвет LS задает NEW расширения, как расширение BASE окрашено
_ls_colors_add () {
  local BASE_COLOR = "$ {LS_COLORS ## *:?. $ 1 =}" NEW
  если ["$ LS_COLORS"! = "$ BASE_COLOR"]; тогда
    Base_color = "$ {base_color %%: *}"
    сдвиг
    для NEW в «$ @»; делать
      если ["$ LS_COLORS" = "$ {LS_COLORS # *. $ NEW =}"]; тогда
        LS_COLORS = "$ {LS_COLORS %%:}:. * $ NEW = $ base_color:"
      фи
    сделанный
  фи
  экспорт LS_COLORS
}

_ls_colors_add zip jar xpi # архивы
_ls_colors_add jpg ico JPG PNG webp # images
_ls_colors_add ogg opus # audio (opus теперь включен по умолчанию)

CLICOLOR = 1 # автоматический цветовой триггер BSD (например, ls -G, но для всего)
если ls -ld --color = auto /> /dev /null 2 ​​& 1
  затем псевдоним ls = "ls -ph --color = auto"
  else alias ls = "ls -ph"
фи

Установите grc ( Generic Colouriser ) и добавьте его в свои псевдонимы:

#, используя это как переменную, позволяет упростить вызов вниз
экспорт GRC = 'grc -es --colour = auto'

# цикл через известные команды плюс все с именованными файлами conf
для cmd в g ++ head ld ping6 tail traceroute6 `locate grc /conf.`; делать
  cmd = "$ {cmd ## * grc /conf.}" # мы хотим только команду
  # если команда существует, псевдоним ее передать через grc
  тип "$ cmd"> /dev /null 2 ​​& 1 & & псевдоним "$ cmd" = "$ GRC $ cmd"
сделанный

# Это требует обнаружения во время выполнения. Мы даже подделываем ошибку «команда не найдена».
configure () {
  если [[-x ./configure]]; тогда
    colourify ./configure "$ @"
  еще
    echo "configure: command not found"> & 2
    возвращение 127
  фи
}

# GRC plus LS awesomeness (предполагает, что у вас есть псевдоним для ls)
unalias ll 2> /dev /null
если ls -ld --color = always /> /dev /null 2 ​​& 1; затем GNU_LS = "- color = always"; фи

ll () {
  если [[-t 1]] || [[-n "$ CLICOLOR_FORCE"]]
    затем colourify ls -l $ GNU_LS "$ @"
    else ls -l "$ @"
  фи
}

Цвета для diff : слишком много содержимого для функции, используйте скрипт и псевдоним в вашем файле rc (ненужно, если вы установили grc):

#! /USR /бен /Perl
использовать строго;
использовать предупреждения;

открыть (DIFF, «- |», «diff», @ARGV) или умереть $ !;

my $ ydiff = 1;
в то время как (<DIFF>) {
  если (не -t 1) {
    Распечатать;
    следующий;
  }
  чавкать;
  $ ydiff = 0, если /^ [<gt; \ @ + -] /или ($. == 1 & /^ \ d + [a-z] {1,5} \ d + $ /);
  my $ color = "";
  если (! $ ydiff & /^ [\ @ + - <gt;] /) {
    $ color = (/^ [<-] (?! - $) /? 1: /^ [+>] /? 2: 5);
  } elsif ($ ydiff & /\ t {6} ([<|>]) (?: \ t | $) /) {
    $ color = ($ 1 экв "<"? 1: $ 1 экв. ">"? 2: 4);
  }
  $ color? printf ("\ e [1; 3% dm% s \ e [0; 0m \ n", $ color, $ _): print "$ _ \ n";
}
закрыть DIFF;

Цвета для приглашения bash :

# Сократить домашний каталог, приводы cygwin, слишком длинные пути
если [-d /cygdrive] & & uname -a | grep -qi cygwin; затем CYGWIN_OS = 1; фи
функция PSWD () {
  local p = "$ *" space A B cols = "$ {COLUMNS: -_tput cols 2> /dev /null || echo 80`}"
  p = "$ {p /$ HOME /\ ~}" # сжимается до тильды
  если [-n "$ CYGWIN_OS"] & & & ["$ {p # /cygdrive /? /}"! = "$ p"]; тогда
    p = "$ {p: 10: 1}: $ {p: 11}" # /cygdrive /c /hi -> C: /привет
  фи
  space = "$ (($ {# USER} + $ {# HOSTNAME} +6))" # ширина без пути
  если ["$ cols" -lt 60]; затем echo -n "$ N"; пространство = -29; р = "$ р $ N \ Ь"; фи
  если ["$ cols" -lt "$ ((пробел + $ {# p} +20))"]; затем # <20 символов для команды
    A = $ (((cols-20-space) /4)) # четверть пробела (-20 для cmd)
    если [$ A -lt 4]; то A = 4; fi # 4+ с начала
    B = $ ((cols-20-space-A * 2)) # половина (плюс округление) пространства
    если [$ B -lt 8]; тогдаВ = 8; fi # 8 + символы с конца
    p = "$ {p: 0: $ A} .. $ {p: - $ B}"
  фи
  echo "$ p"
}

PSC () {echo -ne "\ [\ 033 [$ {1: -0; 38} m \]"; }
PR = "0; 32" # цвет по умолчанию, используемый в приглашении, зеленый
если ["$ (id -u)" = 0]; тогда
    sudo = 41 # корень красный фон
  elif ["$ USER"! = "$ {SUDO_USER: - $ USER}"]; тогда
    sudo = 31 # не root, а не self: красный текст
  else sudo = "$ PR" # стандартный цвет пользователя
фи
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

демонстрация подсказки bash

ответил Adam Katz 13 Jam1000000amTue, 13 Jan 2015 05:04:05 +030015 2015, 05:04:05
5

Вещи, которые еще не были упомянуты здесь:

Чтобы раскрасить выходные данные ваших компиляций с помощью gcc, есть colorgcc от Johannes Schlüter

Чтобы раскрасить журналы, существует многозадачность

Чтобы раскрасить любой stdout, я собрал xcol

 xcol example

Я лично использую их из инструмента xcol.

#normal = $ (tput sgr0) # обычный текст
normal = $ '\ e [0m' # (иногда работает лучше)
bold = $ (tput bold) # сделать цвета жирным /ярким
red = "$ bold $ (tput setaf 1)" # яркий красный текст
green = $ (tput setaf 2) # тусклый зеленый текст
fawn = $ (tput setaf 3); бежевый = "$ палевый" # темно-желтый текст
yellow = "$ bold $ fawn" # яркий желтый текст
darkblue = $ (tput setaf 4) # тусклый синий текст
синий = "$ bold $ darkblue" # яркий синий текст
purple = $ (tput setaf 5); magenta = "$ purple" # пурпурный текст
pink = "$ bold $ purple" # яркий пурпурный текст
darkcyan = $ (tput setaf 6) # dim cyan text
cyan = "$ bold $ darkcyan" # яркий голубой текст
gray = $ (tput setaf 7) # тусклый белый текст
darkgray = "$ bold" $ (tput setaf 0) # bold black = темно-серый текст
белый = "$ bold $ gray" # яркий белый текст

Я использую эти переменные в своих сценариях так:

echo "$ {red} hello $ {yellow}, это $ {green} цветной $ {normal}"

Мне также нравится эта маленькая функция colorEcho (найденная при переполнении стека)

функция colorEcho () {
    локальный exp = $ 1;
    локальный цвет = $ 2;
    если ! [[$ color = ~ '^ [0-9] $']]; тогда
       case $ (echo $ color | tr '[: upper:]' '[: lower:]') в
        черный) color = 0 ;;
        красный) цвет = 1 ;;
        зеленый) цвет = 2 ;;
        желтый) цвет = 3 ;;
        синий) цвет = 4 ;;
        пурпурный) цвет = 5 ;;
        голубой) color = 6 ;;
        белый | *) цвет = 7 ;; # белый или недопустимый цвет
       ESAC
    фи
    tput setaf $ color;
    echo $ exp;
    tput sgr0;
}

colorEcho "Зеленый текст" зеленый

Извините, не разрешено размещать больше ссылок

ответил nachoparker 25 Jpm1000000pmWed, 25 Jan 2017 14:37:02 +030017 2017, 14:37:02
4

Есть хороший инструмент для настройки ваших цветов для команды ls - http://geoff.greer.fm /lscolors /

ответил Rob Cowell 11 PM00000030000002031 2010, 15:46:20
3

Некоторое выделение текста (полужирное), чтобы легко различать корневую и некорневую оболочки. Для Zsh:

if test $ UID = 0
    то PS1 = "% B $ {PS1}% b"
фи

Для Bash:

if test $ UID = 0
    то PS1 = "\ 033 [1m $ {PS1} \ 033 [0m"
фи
ответил Mischa Arefiev 26 Jpm1000000pmThu, 26 Jan 2012 13:10:49 +040012 2012, 13:10:49
3

Я просто задавался вопросом то же самое. У меня есть свой подход, но я ищу альтернативы.

Я пишу обертки bash вокруг вызовов программ и выхожу их вывод, хотя sed. Что мне нравится в sed, так это то, что он будет изменять и эхо-строку сразу же => не много буферизации. Однако мне не нравится, что для каждого вызова завернутой программы код sed анализируется и компилируется.

Например, это то, что я делаю, чтобы покрасить вывод ip:

#
# Цветные коды
#
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
# выделить ip-адреса, имена маршрутов по умолчанию и интерфейсов
#

IP4 = $ GREEN
IP6 = $ LBLUE
IFACE = $ {YELLOW}
DEFAULT_ROUTE = $ LBLUE

IP_CMD = $ (который ip)

Функция color_ip ()
{
$ {IP_CMD} $ @ | sed \
    -e "s /inet [^] \ + /$ {IP4} & $ {NORMAL} /g" \
    -e "s /inet6 [^] \ + /$ {IP6} & $ {NORMAL} /g" \
    -e "s /^ по умолчанию. * $ /$ {DEFAULT_ROUTE} & $ {NORMAL} /" \
    -e "s /^ \ ([0-9] \ +: \ + \) \ ([^ \ t] \ + \) /\ 1 $ {IFACE} \ 2 $ {NORMAL} /"
}

alias ip = 'color_ip'
ответил Bananguin 9 PMpTue, 09 Apr 2013 19:49:14 +040049Tuesday 2013, 19:49:14
3

Я предлагаю вам проверить ZSH и его плагин oh-my-zsh , который имеет одну из самых мощных функций консоли, которые я видел. Один из них выбирает тему для вашего терминала. Это пример моей темы ... В tty цвета не такие теплые, но они такие же, как на этой картинке ... В любом случае вам понравится!

введите описание изображения здесь>> </p></div>
										<div class=ответил urosjarc 15 Maypm15 2015, 22:59:52

2

Вы можете попробовать проект, который также помогает в выводе цветных сценариев, его имя ScriptEchoColor в исходной кузнице: http: //scriptechocolor.sourceforge.net/

например:.

echoc "@ {lr} вывод текста в светло-красный"
echoc "@ {bLGu} в синем, светло-зеленом фоне и подчеркнуто"
echoc "вы @ {lr} можете @ {bLGu} mix @ {- a} все это тоже"
echoc -x "ls" #executes ls command и автоматически раскрашивает его, чтобы его было легко увидеть

Автоматические цвета настраиваются.

Вот пример: введите описание изображения здесь>> </p></div>
										<div class=ответил Aquarius Power 26 AMpFri, 26 Apr 2013 07:27:42 +040027Friday 2013, 07:27:42

2

Для установки приглашения, у меня есть это в моем файле .bashrc.

# Установить переменные для цветов переднего плана
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)
# Установить переменные для цветов фона
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)
# Установить переменные для веса шрифта и текста
B = $ (tput bold); U = $ (tput smul); C = $ (tput sgr0)
#NOTE: $ {C} очищает текущее форматирование

если [[$ USER = "root"]]; тогда
  PS1 = "$ {B} $ {fgRed} \ u $ {C} @ \ h (\ s): $ {fgGreen} \ w $ {C}>"
еще
  PS1 = "$ {B} $ {fgCyan} \ u $ {C} @ \ h (\ s): $ {fgGreen} \ w $ {C}>"
фи

Это дает мне подсказку, которая выглядит примерно так:

user @ host (bash): ~ /bin>

Рабочий каталог находится в зеленом цвете. И имя пользователя полужирное и голубое, если я не запустил оболочку с помощью sudo, и в этом случае имя пользователя («root») отображается полужирным и красным.

Мне лично очень нравится иметь символы управления форматированием, хранящиеся в переменных, потому что это облегчает чтение кода для облегчения настройки подсказки. Это также облегчает редактирование подсказки much .

Причина, по которой я использую tput, заключается в том, что она должна быть более универсальной, чем странные 033 [01; 31m \] последовательности. Кроме того, в качестве дополнительного бонуса, если вы выполните echo $ PS1 в приглашении, вы увидите приглашение raw с цветами вместо этих непонятных управляющих последовательностей.

ответил Sildoreth 15 Mayam15 2015, 04:35:27
2

Отличный универсальный инструмент Python для раскраски вывода команд: colout

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

Так, например, если вы посмотрите на какой-то тестовый вывод:

python -m unittest обнаружить -v

 Нецветный вывод некоторых утилит Python

, то вы можете использовать его:

python -m unittest обнаружить -v 2 & 1 | colout '(. * ERROR $) | (. * FAIL $) | (\ (. * \))' красный, желтый, черный полужирный

 Цветной вывод некоторых утилит Python

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

Обратите внимание также, как мне пришлось добавить 2> & 1 в конец вызова Python, потому что вывод unittest находится на stderr, поэтому я передал его в stdout, чтобы я мог он в колоту.

Это, как правило, так просто в использовании, что я часто обнаруживаю, что я создаю новые вызовы colout на лету и повторно использую их или изменяя из своей истории в командной строке.

Единственным недостатком является то, что он поставляется в виде пакета Python, а не автономного исполняемого файла, поэтому вам нужно установить его с помощью pip или sudo python setup.py install.

ответил Jonathan Hartley 25 J000000Saturday15 2015, 22:52:06
2

Для просмотра вывода diff в цвете используйте colordiff .

sudo apt-get установить colordiff

Произведите вывод любого diff-формата в colordiff:

вывод diff, подключенного к колордиффу

Это включает некоторые альтернативные форматы diff, такие как -y (бок о бок.)

В качестве альтернативы, если он вызван автономно (без каких-либо сообщений в нем), он действует как обертка вокруг «diff» и окрашивает результат. Следовательно, у меня есть это в моем .bashrc, для alias 'diff' для colordiff.

#, если colordiff установлен, используйте его
если тип colordiff> /dev /null; тогда
    alias diff = colordiff
ответил Jonathan Hartley 25 J000000Saturday15 2015, 23:12:55
2

Я считаю, что Solarized полезен. Его аккуратный проект с однородными цветами для множества приложений.

http://ethanschoonover.com/solarized https://github.com/altercation/solarized

ответил Vamsi 31 AM00000020000005431 2016, 02:06:54
1

Я использую упаковку цветов .

  

cw - это неинтрузивная оболочка ANSI для реального времени в реальном времени для общих Unix-основанных   команды на GNU /linux. cw предназначен для имитации среды   исполняемые команды, так что если человек набирает «du», «df», «ping» и т. д.   в своей оболочке он автоматически окрашивает выход в режиме реального времени в соответствии с   в файл определения, содержащий желаемый формат цвета. cw поддерживает   подстановка подстановочных масок, символическая раскраска, верхние и нижние колонтитулы, сценарий   раскраски, окраски, зависящей от командной строки, и включает более 50   готовые файлы определений.

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

ответил user3132194 27 AMpFri, 27 Apr 2018 09:09:31 +030009Friday 2018, 09:09:31
0

Для Mac вы можете использовать следующее, как указано здесь

, если ["$ TERM" = xterm]; затем TERM = xterm-256color; фи
ответил doesnt_matter 10 MarpmTue, 10 Mar 2015 21:44:43 +03002015-03-10T21:44:43+03:0009 2015, 21:44:43

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132