it-swarm-ko.tech

터미널과 쉘 환경을 채색합니까?

나는 대부분의 시간을 유닉스 환경에서 작업하고 터미널 에뮬레이터를 사용합니다. 색상은 출력이 더 유용하고 직관적이기 때문에 명령 줄에서 색상을 사용하려고합니다.

터미널 환경에 색상을 추가하는 데 어떤 옵션이 있습니까? 어떤 트릭을 사용하십니까? 어떤 함정이 있습니까?

불행히도, 색상 지원은 터미널 유형, OS, TERM 설정, 유틸리티, 버그 구현 등에 따라 다릅니다.

다음은 많은 실험을 거친 후 설정에서 얻은 몇 가지 팁입니다.

  1. 대부분의 호스트에서 지원되는 TERM=xterm-color를 설정하는 경향이 있습니다 (모두는 아님).
  2. 저는 여러 다른 호스트, 다른 OS 버전 등에서 작업합니다. macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux 및 FreeBSD의 모든 것을 사용합니다. 가능한 한 간단하고 일반적인 것을 유지하려고합니다.
  3. GNU screen)를 사용하여 많은 작업을 수행하여 다른 재미를 더합니다.
  4. 많은 OS가 기본적으로 dircolors와 같은 것을 설정하며, 백 개가 넘는 호스트에서이를 수정하고 싶지 않습니다. 그래서 나는 기본값을 고수하려고합니다. 대신 터미널의 색상 구성을 조정했습니다.
  5. 일부 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에 대답하겠습니다.

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 (쉘 프롬프트)에서 색상을 사용하도록 설정할 수 있습니다. 예를 들면 다음과 같습니다.

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 + VCtrl + [.

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)는 현재 경로에 대한 버전 제어 정보를 인쇄하는 ~/sbin에서 python 스크립트를 호출합니다. 여기에는 Mercurial, Git, Svn, Cvs 등이 포함됩니다. 스크립트에는 source here 가 있습니다.

Bash Prompt screenshot

이것은 내 프롬프트 구성의 전체 소스 입니다.

86
Kris

grepls에 대해 이미 언급했습니다. 더 많은 색상을 확인하려면 Generic Coloriser , 초기 목적은 로그 파일을 색칠하는 것이었지만 상자는 또한 ping, traceroute, gcc, make, netstat, diff, last, ldapcvs.

정규식을 알고 있으면 쉽게 확장됩니다. psnmap를 목록에 추가했습니다 (grc에 들어가면이 두 도구의 .conf 파일을 공유하게되어 기쁩니다)

(Btw, synaptic, pacman를 통해 설치하려면 "grc"를 검색하는 것이 좋습니다.)

18
Sygo

OSX와 Ubuntu 모두에서 작업하기 위해 수년 동안 .bashrc를 연마했습니다.
또한 소형 조건문으로 크기를 28 줄로 줄였습니다.
내 PS1 프롬프트는 다음과 같습니다. enter image description here

시간은 빨간색, 사용자 이름은 녹색, 기계 이름은 연한 파랑, 암호는 진한 파란색, 자식은 노란색입니다.

내 PS1 프롬프트 기능 :

  • 자식 분기를 보여줍니다!
  • 긴 디렉토리 경로 (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\]>'

사용 가능한 경우 색상이 있고 오류가없는 경우 (예 : OSX) ls의 경우 :

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") \
      "[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

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="\[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로 컴파일 결과를 채색하기 위해 Johannes Schlüter의 colorgcc가 있습니다.

로그를 채색하려면 멀티 테일이 있습니다.

Stdout을 채색하기 위해 함께 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를 좋아한다 (스택 오버 플로우에서 발견 됨)

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

Diff 출력을 컬러로 보려면 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
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로 셸을 실행하지 않으면 사용자 이름은 굵고 시안 색입니다.이 경우 사용자 이름 ( "root")은 굵고 빨간색으로 표시됩니다.

개인적으로 변수에 저장된 서식 제어 문자를 사용하는 것이 프롬프트를 쉽게 설정하기위한 코드를 읽을 수있게하는 것을 좋아합니다. 또한 프롬프트 많이 를보다 쉽게 ​​편집 할 수 있습니다.

tput를 사용하는 이유는 이상한 033[01;31m\] 시퀀스보다 더 보편적으로 지원되어야하기 때문입니다. 또한 추가 보너스로 프롬프트에서 echo $PS1를 수행하면 이해할 수없는 제어 시퀀스 대신 colors와 함께 원시 프롬프트가 표시됩니다.

3
Sildoreth

루트와 비 루트 셸을 쉽게 구분할 수있는 일부 텍스트 장식 (굵게 표시) Zsh의 경우 :

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

배쉬의 경우 :

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

정규식에 3 개의 그룹 (괄호)과 3 개의 색상 (및 선택적으로 3 개의 스타일)이 어떻게 있는지 확인하십시오. 그러나 속기를 사용하여 모든 색상을 '굵게'로 설정했습니다. 그래서 'black'그룹은 괄호 안의 텍스트와 일치합니다 , 진한 회색으로 나타납니다.)

또한 2>&1 Python 호출의 끝까지, unittest의 출력이 stderr에 있기 때문에 stdout으로 전송하여 콜 아웃에 파이프 할 수있게했습니다.

이것은 일반적으로 사용하기 매우 쉬워서 종종 새로운 콜 아웃 호출을 즉시 생성하고 내 명령 줄 기록에서 재사용하거나 수정합니다.

그것의 유일한 단점은 독립 실행 파일이 아닌 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/리눅스의 일반적인 유닉스 기반 명령을위한 비 침입 실시간 ANSI 컬러 래퍼입니다. cw는 실행중인 명령의 환경을 시뮬레이션하도록 설계되어 사용자가 쉘에 'du', 'df', 'ping'등을 입력하면 정의에 따라 실시간으로 자동으로 출력 색상이 지정됩니다 원하는 색상 형식이 포함 된 파일. cw는 와일드 카드 일치 색상 표시, 토큰 화 된 색상 표시, 머리글/바닥 글, 사례 시나리오 색상 표시, 명령 줄 종속 정의 색상 표시를 지원하며 50 개 이상의 사전 정의 된 정의 파일을 포함합니다.

거의 완벽하지만 대화 형 셸의 ps가 파이프의 ps를 비교하여 다른 출력을 반환한다는 것을 알았습니다.

1
user3132194

나처럼 vim를 화려하게 만들려면 다음 두 단계를 따르는 것이 좋습니다.

  1. 이 링크를 따라 기능을 켜는 방법에 대해 알아보십시오. vi 또는 vim에서 색상 구문 강조 표시 .

링크의 주요 단계 :

  1. 다음 명령을 입력하여 ~/.vimrc 파일을 편집하십시오. vi ~/.vimrc

  2. 다음 옵션을 추가하십시오 : 구문 온

  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)에서 선호하는 셸의 명령 줄 사용과는 별도로 사용할 수 있습니다.

다른 프로그램의 출력을 자동으로 채색하지는 않습니다. 오히려 애매한 코드를 기억할 필요가없는 유틸리티입니다. 명백한 색상 이름 또는 기억하기 쉬운 rgb cmyk w(hite) (of) f 약어.

자세한 내용은 textattr repo 를 방문하십시오.

0
jamadagni

Mac의 경우 다음과 같이 지정된대로 사용할 수 있습니다. here

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

Bash를 선택하면 oh-my-bash 를 권장합니다. zsh를 선택하면 oh-my-zsh 를 권장합니다. 둘 다 터미널의 색상 지정과 다른 출력을 지원합니다.

0
TimWirtjes