it-swarm.cn

为您的终端和Shell环境着色?

我大部分时间都在Unix环境中工作并使用终端仿真器。我尝试在命令行上使用color,因为color使输出更加有用和直观。

有哪些选项可为终端环境添加颜色?您使用什么技巧?您遇到了什么陷阱?

不幸的是,对颜色的支持因终端类型,操作系统,TERM设置,实用程序,错误的实现等而异。

经过大量实验,以下是我设置中的一些提示:

  1. 我倾向于设置TERM=xterm-color,在大多数主机(但不是全部)上受支持。
  2. 我在许多不同的主机,不同的OS版本等上工作。我使用macOS X,Ubuntu Linux,RHEL/CentOS/Scientific Linux和FreeBSD的所有软件。如果可能的话,我试图使事情变得简单而通用。
  3. 我使用GNU screen)做了大量工作,这又增加了一层乐趣。
  4. 许多操作系统默认都设置dircolors之类的东西,我不想在一百台不同的主机上进行修改。因此,我尝试使用默认值。相反,我调整了终端的颜色配置。
  5. 为某些 nix命令 使用颜色(lsgreplessvim)和 Bash提示 。这些命令似乎使用标准的“ ANSI转义序列 ”。例如:

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

我将发布我的.bashrc并回答我自己的问题《危险风格》。

267
Stefan Lasiewski

您可以执行以下几项操作:

编辑+代码
很多编辑器都支持语法突出显示。 vimemacs默认情况下启用它。您也可以 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(Shell提示符)设置为使用颜色。例如:

PS1='\e[33;1m\[email protected]\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[\[email protected]\h:  \w]\$ '

在终端的顶部放置一个带有一些随机信息的栏。 (为获得最佳结果,也请使用alias clear="echo -e '\e[2J\n\n'"。)

摆脱转义序列

如果某些东西在您不希望输出颜色时卡住了,我可以使用此sed行去除转义序列:

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

如果您想获得更真实的体验,还可以摆脱以\e[8m开头的行,该行指示终端隐藏文本。 (不受广泛支持。)

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

另请注意,这些^ [s应该是实际的文字^ [s。您可以通过按bash中的^ V ^ [键入它们,即 Ctrl + V, Ctrl + [

123
Lucas Jones

我还使用:

export TERM=xterm-color
export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

而且,如果您希望为Prompt着色,则定义的颜色变量可能会很有用:

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)正在我的〜/ sbin中调用python脚本),该脚本打印有关当前路径的版本控制信息。它包括对Mercurial,Git,Svn,Cvs等的支持。该脚本具有 此处来源

Bash Prompt screenshot

这是我的提示配置的 完整源代码

86
Kris

grepls已经提到过,如果您想查看更多颜色 Generic Coloriser ,其最初目的是为日志文件着色,但是框还会为pingtraceroutegccmakenetstatdifflastldapcvs

如果您知道正则表达式,它很容易扩展。我已经将psnmap添加到列表中(如果您使用grc,我会很高兴为这两个工具共享.conf文件)

(顺便说一句,要通过synapticpacman等安装它,也许您会更好地搜索“ grc”)

18
Sygo

多年来,我一直在磨练.bashrc使其可以在OSX和Ubuntu上使用。
我还使用紧凑的条件语句将其大小减小到28行。
有了它,我的PS1提示看起来像: enter image description here

时间为红色,用户名为绿色,机器名称为浅蓝色,pwd为深蓝色,git分支为黄色。

我的PS1提示的功能:

  • 显示git分支!
  • 较长的目录路径(超过6个元素)被“修剪”以显示前3个目录和后3个目录,然后之间有_(这是LOCATION的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'
12
Michael Durrant

手册页更多详细信息 )的颜色:

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") \
      "[email protected]"
}
function man() { _colorman man "[email protected]"; }
function perldoc() { command perldoc -n less "[email protected]" |man -l -; }

grep 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'

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 "[email protected]"; 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

安装grcGeneric 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 "[email protected]"
  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 "[email protected]"
    else ls -l "[email protected]"
  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;

bash提示的颜色:

# 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
Adam Katz

设置粗体/彩色提示。来自 cyberciti.bizBashFAQ

# '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="\[email protected]\[$bold\]\h\[$reset\]:\w \$ "

我还设法找到了广泛支持的颜色设置,并且这些颜色设置在较旧的环境(甚至是FreeBSD4!)中也不会打印出gobbledygook字符,并且如果TERM = vt100,xterm,xterm-color似乎可以正常工作。 (大部分情况下)。从我的.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
Stefan Lasiewski

有一个很好的工具可以为ls命令设置颜色- http://geoff.greer.fm/lscolors/

5
Rob Cowell

这里还没有说的话:

为了用gcc为编译输出着色,JohannesSchlüter提供了colorgcc

为了给原木着色,有多尾

为了给任何标准输出着色,我放了 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

抱歉,不允许发布更多链接

5
nachoparker

我建议您查看 [〜#〜] zsh [〜#〜] 及其插件 oh-my-zsh ,它具有我所见过的最强大的控制台功能之一。其中之一是为您的终端选择主题。这是我主题的示例...在tty中,颜色不是很温暖,但是就像这张照片一样...任何方式您都会喜欢它!

enter image description here

4
user92622

要查看彩色的差异输出,请使用 colordiff

Sudo apt-get install colordiff

将任何差异格式输出通过管道传递到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
Jonathan Hartley

对于设置提示,我在.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

这给我一个提示,看起来像这样:

[email protected](bash): ~/bin >

工作目录为绿色。用户名是粗体和青色,除非我使用Sudo运行Shell,在这种情况下,用户名(“ root”)将显示为粗体和红色。

我个人真的很喜欢将格式设置控制字符存储在变量中,因为它使阅读用于设置提示的代码更加容易。这也使编辑提示非常容易

我使用tput的原因是,它应该比怪异的033[01;31m\]序列得到更广泛的支持。另外,作为额外的奖励,如果您在提示符处执行echo $PS1,则会看到带有colors的原始提示符,而不是那些难以理解的控制序列。

3
Sildoreth

一些文本修饰(粗体)可以轻松区分root和非root Shell。对于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
Mischa Arefiev

我只是想知道同样的事情。我有自己的方法,但是我正在寻找替代方法。

我围绕程序调用编写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} [email protected] | 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
Bananguin

您可以在命令行上使用cf来进行文件名着色,这是一种基于awk的快速着色器,可通过管道工作-在Truecolor sRGB中为文件名着色。

它具有鲜艳的默认配置,并且与ls不同,它不会因添加新颜色而遭受性能损失。 (ls必须为每个未命中扫描整个LS_COLORS字符串)。

https://github.com/AdamDanischewski/cf

cf usage

cf screenshot

2
A.Danischewski

我发现Solarized有用。它是一个简洁的项目,具有统一的颜色,可用于许多应用程序。

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

2
Vamsi

一个伟大的通用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
Jonathan Hartley

您可以尝试一个有助于对脚本输出进行着色的项目,该项目在源伪造处的名称为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
Aquarius Power

我用 彩色包装纸

cw是用于GNU/linux上基于unix的常见命令的非侵入式实时ANSI颜色包装器。 cw旨在模拟正在执行的命令的环境,因此,如果有人在其Shell中键入“ du”,“ df”,“ ping”等,它将根据定义自动实时为输出着色包含所需颜色格式的文件。 CW支持通配符匹配着色,标记化着色,页眉/页脚,案例方案着色,命令行相关的定义着色,并且包括50多个预制的定义文件。

它几乎是无缝的,但是一旦我发现交互式Shell中的ps会比较管道中的ps返回不同的输出。

1
user3132194

如果您想像我一样使vim变得丰富多彩,建议您遵循以下两个步骤:

  1. 通过以下链接了解如何打开功能: 打开vi或vim中突出显示的颜色语法

链接中的关键步骤:

  1. 通过键入以下命令来编辑〜/ .vimrc文件:vi〜/ .vimrc

  2. 附加以下选项:语法

  3. 保存并关闭文件

  4. 通过运行vim命令进行测试:vim foo.sh

  1. 找到您喜欢的配色方案并使用它。我使用的方案: 我正在使用的方案
0
ZhaoGang

我想谦虚地做广告--​​ 我最近的出版物tatextattr,一个库和命令-该行工具旨在通过将人类可读的规范转换为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),除了您最喜欢的Shell中的命令行使用以外。

请注意,它不会自动使任何其他程序的输出着色。它是一个实用程序,可以帮助您不必记住复杂的代码。您只需要使用明显的颜色名称或易于记忆的颜色rgb cmyk w(hite)(of)f缩写。

有关更多详细信息,请访问 textattr repo

0
jamadagni

对于Mac,您可以按照指定使用以下命令 此处

if [ "$TERM" = xterm ]; then TERM=xterm-256color; fi
0
doesnt_matter

如果您选择bash,我建议 oh-my-bash 。如果选择zsh,我建议 oh-my-zsh 。两者都支持终端的着色和不同的输出。

0
TimWirtjes