Колоризация Ваша терминальная и среда оболочки?

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

(foo;echo $?>/tmp/_$$)|(bar;exit $(cat /tmp/_$$;rm /tmp/_$$))

Править: вот более сильная версия после комментариев Gilles:

(s=/tmp/.$$_$RANDOM;((foo;echo $?>$s)|(bar)); exit $(cat $s;rm $s))

Edit2: и вот немного более легкий вариант после комментария dubiousjim:

(s=/tmp/.$$_$RANDOM;{foo;echo $?>$s;}|bar; exit $(cat $s;rm $s))
265
09.01.2019, 14:49
24 ответа

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

Редакторы + код
У большого количества редакторов есть поддержка подсветки синтаксиса. 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;32mThis is my computer\e[u[\u@\h:  \w]\$ '

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

Избавление от escape-последовательностей

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

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

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

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

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

123
27.01.2020, 19:26
  • 1
    Первая строка PS1 должна читать как это: PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '. После четвертой обратной косой черты существует лишний x. –  Chris 23.05.2013, 10:30
  • 2
    В Escape нужно включить \[...\] или иначе команды во второй строке перезапишут первую строку. PS1 = '[\e [33; 1 м] \u@\h: [\e [31 м] \W\e [0m\$' –  yanglifu90 29.08.2013, 22:09

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

5
27.01.2020, 19:26

Установите полужирную/цветную подсказку. Из cyberciti.biz и 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 \$ "

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

# 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
8
27.01.2020, 19:26
  • 1
    Или если Вы хотите использовать ZSH, подсказка Phil Gold по aperiodic.net/phil/prompt является произведением искусства. –  tsvallender 12.08.2010, 12:27

grep и ls были уже упомянуты, если Вы хотите намного больше выезда цветов Универсальный Coloriser, его начальная цель была к colorize файлам журнала, но прямо из поля он также colorizes ping, traceroute, gcc, make, netstat, diff, last, ldap, и cvs.

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

(Btw, для установки его через synaptic, pacman, и одинаково у Вас могла бы быть лучшая удача при поиске "grc"),

18
27.01.2020, 19:26
  • 1
    grc теперь поддержки ps по умолчанию. Я интересовался бы Вашим nmap окраски. См. также мой ответ для искажения всех их способом, которые поглотят новые команды, когда Вы обновите grc. –  Adam Katz 13.01.2015, 05:05
  • 2
    я заметил это. вот является мой conf.nmap (и все остальное, действительно) gist.github.com/sygo/844982#file-conf-nmap - я заметил, что Вы работаете в infosec, Вы могли бы найти conf.hexdump интересный, я еще не закончил его все же. –  Sygo 06.02.2015, 23:29
  • 3
    Спасибо @Sygo. Я разветвил и пересмотрел Вашу суть. Я на самом деле никогда не фиксировал данные с мерзавцем (уже не говоря о сути GitHub), и я не могу выяснить, как предложить объединить их назад с Вами (я предполагаю, что это вызвано тем, что суть слишком упрощена). –  Adam Katz 07.02.2015, 03:54
  • 4
    я подозреваю Вас, не может, потому что это - суть и не надлежащий репозиторий. Я действительно проверял Ваше ветвление, хотя и я определенно даю Вашей версии движение. Мне любопытно как, что то шестнадцатеричное число выводят, каждый превратится... в –  Sygo 07.02.2015, 04:48

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

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="$TITLEBAR\n\[${UC}\]\u \[${COLOR_LIGHT_BLUE}\]\${PWD} \[${COLOR_BLACK}\]\$(vcprompt) \n\[${COLOR_LIGHT_GREEN}\]→\[${COLOR_NC}\] "  

$ (vcprompt) называет сценарий Python в моем ~/sbin, который печатает информацию об управлении версиями о текущем пути. Это включает поддержку Подвижного, Мерзавца, Svn, Cvs, и т.д. У автора сценария есть источник здесь.

Bash prompt screenshot

Это - полный источник моей быстрой конфигурации:

86
27.01.2020, 19:26
  • 1
    Посмотрите здесь для решения проблемы строки, которую я получил, когда я использовал вышеупомянутое PS1: stackoverflow.com/questions/5087036 / … –  Xander Dunn 10.09.2012, 18:53
  • 2
    я обновил ответ для отражения завершенных скобок для цветов в подсказке.Спасибо! –  Kris 27.11.2014, 09:57
  • 3
    $LSCOLORS и $CLICOLOR для BSD ls. GNU ls (Linux) использование $LS_COLORS с другим синтаксисом. Поскольку GNU чувствует себя подобно домой мне, я использую LSCOLORS=exgxfxDacxBaBaCaCaeaEa подражать цветам GNU на BSD. –  Adam Katz 13.01.2015, 00:22
  • 4
    grep: warning: GREP_OPTIONS is deprecated; please use an alias or script –  Steven Almeroth 23.11.2016, 23:19

Некоторое текстовое художественное оформление (полужирное) для легкой дифференциации между корневой и некорневой оболочкой. Для Zsh:

if test $UID = 0
    then PS1="%B${PS1}%b "
fi

Для Bash:

if test $UID = 0
    then PS1="\033[1m${PS1}\033[0m"
fi
3
27.01.2020, 19:26
  • 1
    , укажите оболочку. Единственная оболочка вопроса определенный тег является ударом, но я чувствую Ваш код, не bash. –  manatwork 26.01.2012, 11:21
  • 2
    @manatwork: извините, забыл упоминать, что это был Zsh. Обновленный мое сообщение. –  Mischa Arefiev 26.01.2012, 11:53

Можно попробовать проект, который помогает на выводе сценариев колоризации также, его именованном ScriptEchoColor в исходном штамповочном прессе: 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

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

Это - пример, сделанный с ним: enter image description here

2
27.01.2020, 19:26

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

Я пишу обертки удара вокруг вызовов программы и передаю их вывод по каналу хотя 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'
3
27.01.2020, 19:26

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

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; Ярко-зеленый, см. Другие сообщения здесь для других цветов):

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'

Больше цветов для GNU LS :

# 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

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

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

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

#!/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%s\e[0;0m\n",$color,$_) : print "$_\n";
}
close DIFF;

Цвета для Pash Prompt :

# 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

demo of bash prompt

9
27.01.2020, 19:26

Я утолкнул мой .bashrc в течение многих лет, чтобы работать на ОСХ и Ubuntu.
Я также уменьшил его размером до 28 строк с компактными утверждениями.
С этим моим подсказкой PS1 выглядит: enter image description here

Со временем в красном, имени пользователя в зеленом, имени машины в светло-голубом, PWD в темнее синей и гидромагнитной ветви в желтом.

Особенность моей подсказки PS1:

  • показывает филиал Git!
  • Дополнительные пути каталога (более 6 элементов) являются «обрезаны», чтобы показать топ-3 и нижние 3 каталога с _ между чем тогда (это PWD SED часть местоположения).
  • Возвращение каретки в конце, чтобы пригласить всегда слева!

Соответствующие линии из моих .bashrc .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'
12
27.01.2020, 19:26

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

if [ "$TERM" = xterm ]; then TERM=xterm-256color; fi
0
27.01.2020, 19:26

Значение umask , установленное в сеансе, не влияет на cron . (Фактически, каждый сеанс может иметь различную маску .) Необходимо установить umask в начале сценария, выполняемого cron .

-121--229479-

Каталог (как и любой файл) не определяется его именем. Укажите имя в качестве адреса каталога. Когда вы перемещаете каталог, это все тот же каталог, так же, как если вы переезжаете в другой дом, вы все тот же человек. Если вы удаляете каталог и создаете новый по тому же имени, это новый каталог, как и тот, кто переезжает в дом, где вы жили, это не вы.

Каждый процесс имеет рабочий каталог . Команда cd в оболочке изменяет текущий рабочий каталог оболочки. Команда pwd используется для вывода на печать в текущей рабочей директории пути, указанного в параметре start.

Когда вы удалили каталог A, это было сделано, чтобы удалить запись для A в родительском каталоге. Сам каталог A остался в файловой системе, но в отсоединенном состоянии, без имени. Он еще не был удален, поскольку используется процессом, а именно первой оболочкой. При изменении каталога в первой оболочке каталог был окончательно удален. То же самое происходит, когда файл удаляется, в то время как процесс все еще открывает его: запись в каталоге файла удаляется немедленно, а сам файл удаляется, когда он перестает использоваться.

Также обратите внимание на то, что происходит при перемещении каталогов.

mkdir one two
touch one/1 two/2
cd one
ls

В другой оболочке:

mv one tmp
mv two one
mv tmp two

В первой оболочке:

ls

файл 1 находится в каталоге, который первоначально назывался один и теперь называется два . Файл 2 находится в каталоге, который первоначально назывался два и теперь называется один .

start Точнее, путь , который не может быть уникальным, если задействованы символические ссылки или другие тонкости.

-121--31743-

Для установки подсказки в файле .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

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

user@host(bash): ~/bin >

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

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

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

3
27.01.2020, 19:26

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

enter image description here

4
27.01.2020, 19:26

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

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

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

python -m unittest discover -v

Uncolored output of some Python unittests

, вы можете украсить его с помощью:

python -m unittest discover -v 2>&1 | colout '(.*ERROR$)|(.*FAIL$)|(\(.*\))' red,yellow,black bold

Colored output of some Python unittests

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

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

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

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

2
27.01.2020, 19:26

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

sudo apt-get install colordiff

Передайте любой вывод в формате diff в colordiff:

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
4
27.01.2020, 19:26

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

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

2
20.08.2021, 13:40

То, что здесь еще не было сказано:

Раскрасить вывод ваши компиляции с gcc, есть colorgcc от Johannes Schlüter

Для раскрашивания журналов есть multitail

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

xcol example

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

#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}"

Мне также нравится эта маленькая функция colorEcho (найдена в 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

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

7
20.08.2021, 13:40

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

cw is a non-intrusive real-time ANSI color wrapper for common unix-based commands on GNU/linux. cw is designed to simulate the environment of the commands being executed, so that if a person types 'du', 'df', 'ping', etc. in their shell it will automatically color the output in real-time according to a definition file containing the color format desired. cw has support for wildcard match coloring, tokenized coloring, headers/footers, case scenario coloring, command line dependent definition coloring, and includes over 50 pre-made definition files.

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

2
20.08.2021, 13:40

Я хотел бы смиренно прорекламировать мою недавнюю публикацию taили textattr , библиотеки и инструмента командной -строки, целью которого является добавление цвета и атрибутов к упростите вывод вашей программы на терминал, транслировав удобочитаемые -спецификации в escape-коды 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"

даст вам что-то вроде:

enter image description here

В настоящее время эту библиотеку можно использовать на четырех языках C, C++, D и Python, за исключением командной строки из вашей любимой оболочки.

Обратите внимание, что он не раскрашивает автоматически вывод любых других программ. Это скорее утилита, которая поможет вам не запоминать заумные коды.Вам нужно использовать только очевидные названия цветов или их простые сокращения от -до -запомнить rgb cmyk w (hite)(из )f .

Для получения дополнительной информации посетите репозиторий textattr .

0
20.08.2021, 13:40

Если вы хотите сделать свой vimкрасочным, как я, я предлагаю вам выполнить два шага:

  1. узнайте, как включить эту функцию, перейдя по этой ссылке:включите подсветка синтаксиса цветом в vi или vim .

key steps in the link:

  1. Edit ~/.vimrc file by typing the command: vi ~/.vimrc

  2. Append the following option:syntax on

  3. Save and close the file

  4. Test it by running vim command: vim foo.sh

  1. Найдите понравившуюся цветовую схему и используйте ее. Схема, которую я использую:Схема, которую я использую
0
20.08.2021, 13:40

Если вы выбрали bash, я рекомендую о, -мой -bash . Если вы выбрали zsh, я рекомендую о -мой -zsh . Оба поддерживают раскрашивание вашего терминала и другой вывод.

0
20.08.2021, 13:40

Вы можете использовать мой cf для раскрашивания имен файлов в командной строке, это быстрый маленький колоризатор на основе awk -, который работает через конвейеры -раскрашивания имен файлов в Truecolor sRGB.

Он имеет ярко окрашенную конфигурацию по умолчанию и, в отличие от ls, имеет не страдать от снижения производительности при добавлении новых цветов. (ls должен сканировать вся строка LS _COLORS для каждого промаха ).

https://github.com/AdamDanischewski/cf

cf usage

cf screenshot

2
20.08.2021, 13:40

Чтобы получить потрясающую раскраску diff, вам следует взглянуть наhttps://github.com/dandavison/delta

Вы просто устанавливаете его, а затем добавляете в.gitconfig

[pager]
    diff = delta
    log = delta
    reflog = delta
    show = delta

[interactive]
    diffFilter = delta --color-only --features=interactive

Затем вы получаете подсветку синтаксиса в ваших различиях

syntax highlighted diff

0
20.08.2021, 13:40

Если вы хотите сделать это с файлами журналов.

tail -f example.log | sed \
-e "s/FATAL/"$'\e[31m'"&"$'\e[m'"/" \
-e "s/ERROR/"$'\e[31m'"&"$'\e[m'"/" \
-e "s/WARNING/"$'\e[33m'"&"$'\e[m'"/" \
-e "s/INFO/"$'\e[32m'"&"$'\e[m'"/" \
-e "s/DEBUG/"$'\e[34m'"&"$'\e[m'"/"

Пример работы и скриншот ниже:

echo " [timestamp] production.FATAL Some Message\n" \
"[timestamp] production.ERROR Some Message\n" \
"[timestamp] production.WARNING Some Message\n" \
"[timestamp] production.INFO Some Message\n" \
"[timestamp] production.DEBUG Some Message\n"  | sed \
-e "s/FATAL/"$'\e[31m'"&"$'\e[m'"/" \
-e "s/ERROR/"$'\e[31m'"&"$'\e[m'"/" \
-e "s/WARNING/"$'\e[33m'"&"$'\e[m'"/" \
-e "s/INFO/"$'\e[32m'"&"$'\e[m'"/" \
-e "s/DEBUG/"$'\e[34m'"&"$'\e[m'"/"

На Mac распечатывается так:

Mac sed logs to add colour

1
08.11.2021, 14:20

Теги

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