나는 대부분의 시간을 유닉스 환경에서 작업하고 터미널 에뮬레이터를 사용합니다. 색상은 출력이 더 유용하고 직관적이기 때문에 명령 줄에서 색상을 사용하려고합니다.
터미널 환경에 색상을 추가하는 데 어떤 옵션이 있습니까? 어떤 트릭을 사용하십니까? 어떤 함정이 있습니까?
불행히도, 색상 지원은 터미널 유형, OS, TERM 설정, 유틸리티, 버그 구현 등에 따라 다릅니다.
다음은 많은 실험을 거친 후 설정에서 얻은 몇 가지 팁입니다.
TERM=xterm-color
를 설정하는 경향이 있습니다 (모두는 아님).screen
)를 사용하여 많은 작업을 수행하여 다른 재미를 더합니다.dircolors
와 같은 것을 설정하며, 백 개가 넘는 호스트에서이를 수정하고 싶지 않습니다. 그래서 나는 기본값을 고수하려고합니다. 대신 터미널의 색상 구성을 조정했습니다.일부 nix 명령 (ls
, grep
, less
, vim
) 및 Bash Prompt)에 색상 사용 . 이 명령은 표준 " ANSI 이스케이프 시퀀스 "를 사용하는 것 같습니다. 예를 들면 다음과 같습니다.
alias less='less --RAW-CONTROL-CHARS'
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
내 .bashrc
를 게시하고 내 질문 Jeopardy Style에 대답하겠습니다.
수행 할 수있는 몇 가지 작업은 다음과 같습니다.
편집자 + 코드
많은 편집자들이 구문 강조를 지원합니다. 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\[email protected]\h: \e[31m\W\e[0m\$ '
다음과 같은 PS1을 생성합니다.
[yellow] 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 + [.
나는 또한 사용한다 :
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)는 현재 경로에 대한 버전 제어 정보를 인쇄하는 ~/sbin에서 python 스크립트를 호출합니다. 여기에는 Mercurial, Git, Svn, Cvs 등이 포함됩니다. 스크립트에는 source here 가 있습니다.
이것은 내 프롬프트 구성의 전체 소스 입니다.
grep
및 ls
에 대해 이미 언급했습니다. 더 많은 색상을 확인하려면 Generic Coloriser , 초기 목적은 로그 파일을 색칠하는 것이었지만 상자는 또한 ping
, traceroute
, gcc
, make
, netstat
, diff
, last
, ldap
및 cvs
.
정규식을 알고 있으면 쉽게 확장됩니다. ps
및 nmap
를 목록에 추가했습니다 (grc
에 들어가면이 두 도구의 .conf 파일을 공유하게되어 기쁩니다)
(Btw, synaptic
, pacman
를 통해 설치하려면 "grc"를 검색하는 것이 좋습니다.)
OSX와 Ubuntu 모두에서 작업하기 위해 수년 동안 .bashrc를 연마했습니다.
또한 소형 조건문으로 크기를 28 줄로 줄였습니다.
내 PS1 프롬프트는 다음과 같습니다.
시간은 빨간색, 사용자 이름은 녹색, 기계 이름은 연한 파랑, 암호는 진한 파란색, 자식은 노란색입니다.
내 PS1 프롬프트 기능 :
_
가있는 상위 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\]>'
사용 가능한 경우 색상이 있고 오류가없는 경우 (예 : OSX) ls의 경우 :
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
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") \
"[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
grc
( Generic 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
굵게/컬러 프롬프트를 설정하십시오. 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="\[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
Ls 명령에 대한 색상을 설정하는 좋은 도구가 있습니다- http://geoff.greer.fm/lscolors/
아직 여기에 언급되지 않은 것들 :
Gcc로 컴파일 결과를 채색하기 위해 Johannes Schlüter의 colorgcc가 있습니다.
로그를 채색하려면 멀티 테일이 있습니다.
Stdout을 채색하기 위해 함께 xcol
나는 개인적으로 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를 좋아한다 (스택 오버 플로우에서 발견 됨)
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
죄송합니다. 더 많은 링크를 게시 할 수 없습니다
Diff 출력을 컬러로 보려면 colordiff 를 사용하십시오.
Sudo apt-get install colordiff
Diff 형식 출력을 colordiff로 파이프하십시오.
여기에는 -y
(나란히)와 같은 diff의 대체 형식이 포함됩니다.
또는 파이프에 아무것도 넣지 않고 독립형으로 호출하면 '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
이렇게하면 다음과 같은 프롬프트가 표시됩니다.
[email protected](bash): ~/bin >
작업 디렉토리는 녹색입니다. Sudo
로 셸을 실행하지 않으면 사용자 이름은 굵고 시안 색입니다.이 경우 사용자 이름 ( "root")은 굵고 빨간색으로 표시됩니다.
개인적으로 변수에 저장된 서식 제어 문자를 사용하는 것이 프롬프트를 쉽게 설정하기위한 코드를 읽을 수있게하는 것을 좋아합니다. 또한 프롬프트 많이 를보다 쉽게 편집 할 수 있습니다.
tput
를 사용하는 이유는 이상한 033[01;31m\]
시퀀스보다 더 보편적으로 지원되어야하기 때문입니다. 또한 추가 보너스로 프롬프트에서 echo $PS1
를 수행하면 이해할 수없는 제어 시퀀스 대신 colors와 함께 원시 프롬프트가 표시됩니다.
루트와 비 루트 셸을 쉽게 구분할 수있는 일부 텍스트 장식 (굵게 표시) 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} [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'
커맨드 라인에서 파일 이름을 채색하는 데 내 cf를 사용할 수 있습니다. 파이프를 통해 작동하는 빠른 awk 기반의 컬러 라이저입니다-Truecolor sRGB에서 파일 이름을 채색합니다.
밝은 색상의 기본 구성이 있으며 ls와 달리 새 색상을 추가해도 성능이 저하되지 않습니다. (ls는 각 누락에 대해 전체 LS_COLORS 문자열을 스캔해야합니다).
https://github.com/AdamDanischewski/cf
Solarized가 유용하다고 생각합니다. 많은 응용 분야에 균일 한 색상의 깔끔한 프로젝트입니다.
http://ethanschoonover.com/solarizedhttps://github.com/altercation/solarized
명령의 출력을 채색하는 훌륭한 범용 Python 도구는 ' colout '
N 그룹으로 정규 표현식을 제공하고 쉼표로 구분 된 N 색상 목록을 제공합니다. 그룹과 일치하는 모든 텍스트가 해당 색상으로 표시됩니다.
예를 들어 테스트 출력을보고 있다면 :
python -m unittest discover -v
다음과 같이 가문비 나무를 가릴 수 있습니다.
python -m unittest discover -v 2>&1 | colout '(.*ERROR$)|(.*FAIL$)|(\(.*\))' red,yellow,black bold
정규식에 3 개의 그룹 (괄호)과 3 개의 색상 (및 선택적으로 3 개의 스타일)이 어떻게 있는지 확인하십시오. 그러나 속기를 사용하여 모든 색상을 '굵게'로 설정했습니다. 그래서 'black'그룹은 괄호 안의 텍스트와 일치합니다 , 진한 회색으로 나타납니다.)
또한 2>&1
Python 호출의 끝까지, unittest의 출력이 stderr에 있기 때문에 stdout으로 전송하여 콜 아웃에 파이프 할 수있게했습니다.
이것은 일반적으로 사용하기 매우 쉬워서 종종 새로운 콜 아웃 호출을 즉시 생성하고 내 명령 줄 기록에서 재사용하거나 수정합니다.
그것의 유일한 단점은 독립 실행 파일이 아닌 Python 패키지로 제공되므로 pip 또는 Sudo python setup.py install
.
소스 포지에서 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
자동 색상을 구성 할 수 있습니다.
다음은 그 예입니다.
컬러 래퍼 를 사용합니다.
cw는 GNU/리눅스의 일반적인 유닉스 기반 명령을위한 비 침입 실시간 ANSI 컬러 래퍼입니다. cw는 실행중인 명령의 환경을 시뮬레이션하도록 설계되어 사용자가 쉘에 'du', 'df', 'ping'등을 입력하면 정의에 따라 실시간으로 자동으로 출력 색상이 지정됩니다 원하는 색상 형식이 포함 된 파일. cw는 와일드 카드 일치 색상 표시, 토큰 화 된 색상 표시, 머리글/바닥 글, 사례 시나리오 색상 표시, 명령 줄 종속 정의 색상 표시를 지원하며 50 개 이상의 사전 정의 된 정의 파일을 포함합니다.
거의 완벽하지만 대화 형 셸의 ps가 파이프의 ps를 비교하여 다른 출력을 반환한다는 것을 알았습니다.
나처럼 vim
를 화려하게 만들려면 다음 두 단계를 따르는 것이 좋습니다.
링크의 주요 단계 :
다음 명령을 입력하여 ~/.vimrc 파일을 편집하십시오. vi ~/.vimrc
다음 옵션을 추가하십시오 : 구문 온
파일을 저장하고 닫습니다
Vim 명령을 실행하여 테스트하십시오 : vim foo.sh
내 최근 출판물 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"
당신에게 다음과 같은 것을 줄 것입니다 :
현재이 라이브러리는 C, C++, D 및 Python)에서 선호하는 셸의 명령 줄 사용과는 별도로 사용할 수 있습니다.
다른 프로그램의 출력을 자동으로 채색하지는 않습니다. 오히려 애매한 코드를 기억할 필요가없는 유틸리티입니다. 명백한 색상 이름 또는 기억하기 쉬운 rgb cmyk w(hite) (of) f 약어.
자세한 내용은 textattr repo 를 방문하십시오.
Mac의 경우 다음과 같이 지정된대로 사용할 수 있습니다. here
if [ "$TERM" = xterm ]; then TERM=xterm-256color; fi
Bash를 선택하면 oh-my-bash 를 권장합니다. zsh를 선택하면 oh-my-zsh 를 권장합니다. 둘 다 터미널의 색상 지정과 다른 출력을 지원합니다.