web-dev-qa-db-ja.com

端末とシェル環境をカラー化しますか?

私はほとんどの時間をUnix環境で作業し、ターミナルエミュレータを使用しています。色を使用すると、出力がより便利で直感的になります。

端末環境に色を追加するにはどのようなオプションがありますか?どんなトリックを使っていますか?どのような落とし穴に遭遇しましたか?

残念ながら、色のサポートは端末タイプ、OS、TERM設定、ユーティリティ、バグのある実装などによって異なります。

多くの実験の後の私のセットアップからのいくつかのヒントはここにあります:

  1. TERM=xterm-color、ほとんどのホストでサポートされています(すべてではありません)。
  2. 私はさまざまなホスト、さまざまなOSバージョンなどで作業しています。macOSX、Ubuntu Linux、RHEL/CentOS/Scientific Linux、FreeBSDのすべてを使用しています。可能であれば、私は物事をシンプルで一般的なものに保つようにしています。
  3. 私はGNU screenを使用して一連の作業を行います。これにより、さらに楽しい層が追加されます。
  4. 多くのOSはdircolorsのようなものを設定し、デフォルトでは100の異なるホストでこれを変更したくありません。だから私はデフォルトに固執しようとします。代わりに、端末の色設定を微調整します。
  5. 一部の nixコマンドlsgreplessvim)および Bashプロンプトに色を使用する 。これらのコマンドは、標準の「 ANSIエスケープシーケンス 」を使用しているようです。例えば:

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

.bashrcと私自身の質問Jeopardyスタイルに答えます。

267

できることは次のとおりです。

編集者+コード
多くのエディターは構文強調表示をサポートしています。 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(シェルプロンプト)で色を使用するように設定できます。例えば:

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'"も使用してください。)

エスケープシーケンスを取り除く

何かしたくないときに色が出力されない場合は、このsed行を使用してエスケープシーケンスを削除します。

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

より本格的なエクスペリエンスが必要な場合は、\e[8mで始まる行を削除して、端末にテキストを非表示にするように指示することもできます。 (広くサポートされていません。)

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

また、これらの^ [は実際のリテラル^ [である必要があります。 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

プロンプトをカラー化したい場合は、定義されたカラー変数が役立ちます。

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スクリプトをmy // sbinで呼び出しています。これには、Mercurial、Git、Svn、Cvsなどのサポートが含まれています。スクリプトには ここにソース があります。

Bash Prompt screenshot

これは私のプロンプト設定の 完全なソース です:

86
Kris

greplsについてはすでに触れましたが、もっと多くの色を確認したい場合は Generic Coloriser を使用してください。最初の目的はログファイルを色付けすることでしたが、 pingtraceroutegccmakenetstatdifflastldap、およびcvs

正規表現を知っていれば、簡単に拡張できます。 psnmapをリストに追加しました(grcにアクセスした場合、これら2つのツールの.confファイルを共有できることをうれしく思います)

(ところで、synapticpacmanを使用してインストールするには、 "grc"を検索するとうまくいく場合があります)

18
Sygo

OSXとUbuntuの両方で作業できるように、何年にもわたって.bashrcを磨きました。
コンパクトな条件ステートメントを使用して、サイズを28行に縮小しました。
これにより、PS1プロンプトは次のようになります。 enter image description here

時間は赤、ユーザー名は緑、マシン名は水色、パスワードは濃い青、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

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

インストール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 "$@"
  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;

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.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-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

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

私はこの小さな関数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

これ以上のリンクを投稿することはできません

5
nachoparker

[〜#〜] zsh [〜#〜] とそのプラグイン oh-my-zsh をチェックして、最も強力なコンソール機能の1つを確認することをお勧めします。その1つは、端末のテーマを選択することです。これは私のテーマの例です... ttyの色はそれほど暖かくはありませんが、この写真のように同じです...

enter image description here

4
user92622

差分出力をカラーで表示するには、 colordiff を使用します。

Sudo apt-get install colordiff

Diff形式の出力をcolordiffにパイプします。

output of diff piped into colordiff

これには、-y(並べて表示)などのdiffの代替形式が含まれます。

あるいは、スタンドアロンで呼び出された場合(パイプに何もパイプされていない場合)、「diff」のラッパーとして機能し、出力に色を付けます。したがって、これは私の.bashrcにあり、別名「diff」をcolordiffにしています。

# if colordiff is installed, use it
if type colordiff &>/dev/null ; then
    alias diff=colordiff
4

プロンプトを設定するために、これを.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\]シーケンスよりも普遍的にサポートされることになっているためです。また、追加のボーナスとして、プロンプトでecho $PS1を実行すると、判読できない制御シーケンスの代わりに、colorsの生のプロンプトが表示されます。

3
Sildoreth

ルートシェルと非ルートシェルを簡単に区別するためのテキスト装飾(太字)。 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} $@ | 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

コマンドラインでファイル名の色付けにmy cfを使用できます。これは、パイプ経由で機能するawkベースのクイックカラーライザーです。TruecolorsRGBでファイル名に色を付けます。

鮮やかな色のデフォルト設定があり、lsとは異なり、新しい色を追加してもパフォーマンスが低下することはありません。 (lsは、ミスごとにLS_COLORS文字列全体をスキャンする必要があります)。

https://github.com/AdamDanischewski/cf

cf usage

cf screenshot

2
A.Danischewski

ソラリゼーションは便利だと思います。多くのアプリケーションで均一な色を使用した、きちんとしたプロジェクトです。

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

私の正規表現が3つのグループ(括弧)に続いて3つの色(およびオプションで3つのスタイル)を持っている方法を確認します。 、濃い灰色で表示されます。)

Python呼び出しの最後に_2>&1_を追加する必要があったことにも注意してください。これは、unittestの出力がstderrにあるため、パイプで接続できるようにstdoutに転送したためです。 coloutに。

これは一般的に使いやすいので、新しいcolout呼び出しをその場で作成し、コマンドライン履歴から再利用または変更することがよくあります。

唯一の欠点は、スタンドアロンの実行可能ファイルではなく、Pythonパッケージとして提供されることです。そのため、pipまたは_Sudo python setup.py install_を使用してインストールする必要があります。

2

スクリプト出力の色付けにも役立つプロジェクトを試すことができます。その名前付きの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は実行されているコマンドの環境をシミュレートするように設計されているため、ユーザーがシェルで「du」、「df」、「ping」などを入力すると、定義に従ってリアルタイムで出力に自動的に色が付けられます。必要なカラーフォーマットを含むファイル。 cwは、ワイルドカード一致のカラーリング、トークン化されたカラーリング、ヘッダー/フッター、ケースシナリオのカラーリング、コマンドラインに依存する定義のカラーリングをサポートしており、50以上の既成の定義ファイルが含まれています。

ほぼシームレスですが、インタラクティブシェルのpsがパイプ内のpsと比較して異なる出力を返すことがわかりました。

1
user3132194

私と同じようにvimをカラフルにしたい場合は、次の2つの手順に従うことをお勧めします。

  1. このリンクをたどってこの機能をオンにする方法を学んでください: viまたはvimでカラー構文の強調表示をオンにします

リンクの主な手順:

  1. コマンドを入力して〜/ .vimrcファイルを編集します:vi〜/ .vimrc

  2. 次のオプションを追加します:構文on

  3. ファイルを保存して閉じます

  4. Vimコマンドを実行してテストします:vim foo.sh

  1. 好きな配色を見つけて使ってください。私が使用するスキーム: 私が使用しているスキーム
0
ZhaoGang

私の最近の出版物 of taまたはtextattr、ライブラリ、およびコマンド-を謙虚に宣伝したい人間が読める形式の仕様をANSIエスケープコードに変換することで、プログラムの端末出力を美しくするために色と属性を追加することを目的としたラインツール。

例えば:

echo "The Git repo $(ta yellow)${CUR_REPO}$(ta off) is $(ta green)up-to-date$(ta off)"

またはさらに短い:

echo "The Git repo $(ta y)${CUR_REPO}$(ta f) is $(ta g)up-to-date$(ta f)"

または代替:

tawrite "The Git repo " @y ${CUR_REPO} @f " is " @g up-to-date @f "\n"

次のようなものになります:

enter image description here

現在、このライブラリは、C、C++、D、およびPython)の4つの言語から使用できます。

他のプログラムの出力を自動的に色付けしないことに注意してください。それはむしろ、乱用コードを覚える必要がないのを助けるユーティリティです。わかりやすい色の名前または覚えやすい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