it-swarm-id.com

Mewarnai lingkungan terminal dan Shell Anda?

Saya menghabiskan sebagian besar waktu saya bekerja di lingkungan Unix dan menggunakan emulator terminal. Saya mencoba menggunakan warna pada baris perintah, karena warna membuat output lebih berguna dan intuitif.

Opsi apa yang ada untuk menambahkan warna ke lingkungan terminal saya? Trik apa yang Anda gunakan? Perangkap apa yang Anda temui?

Sayangnya, dukungan untuk warna bervariasi tergantung pada jenis terminal, OS, pengaturan TERM, utilitas, implementasi buggy, dll.

Berikut adalah beberapa tips dari pengaturan saya, setelah banyak percobaan:

  1. Saya cenderung mengatur TERM=xterm-color, Yang didukung pada sebagian besar host (tetapi tidak semua).
  2. Saya bekerja pada sejumlah host yang berbeda, versi OS yang berbeda, dll. Saya menggunakan semuanya dari macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux dan FreeBSD. Saya mencoba untuk menjaga hal-hal sederhana dan generik, jika memungkinkan.
  3. Saya melakukan banyak pekerjaan menggunakan GNU screen, yang menambahkan lapisan kesenangan lainnya.
  4. Banyak OS mengatur hal-hal seperti dircolors dan secara default, dan saya tidak ingin memodifikasi ini pada seratus host yang berbeda. Jadi saya mencoba untuk tetap dengan default. Sebagai gantinya, saya Tweak konfigurasi warna terminal saya.
  5. Gunakan warna untuk beberapa perintah Unix (ls, grep, less, vim) dan Bash Prompt . Perintah-perintah ini tampaknya menggunakan standar " rutan pelarian ANSI ". Sebagai contoh:

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

Saya akan memposting .bashrc Dan menjawab pertanyaan saya sendiri Gaya Jeopardy.

267
Stefan Lasiewski

Berikut adalah beberapa hal yang dapat Anda lakukan:

Editor + Kode
Banyak editor memiliki dukungan penyorotan sintaksis. vim dan emacs aktifkan secara default. Anda juga dapat mengaktifkannya di bawah nano .

Anda juga dapat sintaksis kode sorot pada terminal dengan menggunakan Pygments sebagai alat baris perintah.

grep
grep --color=auto menyoroti semua pertandingan. Anda juga bisa menggunakan export GREP_OPTIONS='--color=auto' untuk membuatnya tetap tanpa alias. Jika Anda menggunakan --color=always, itu akan menggunakan warna bahkan ketika memiplak , yang membingungkan segalanya.

ls

ls --color=always

Warna ditentukan oleh:

export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'

(petunjuk: dircolors dapat membantu)

PS1
Anda dapat mengatur PS1 (Shell Prompt) Anda untuk menggunakan warna. Sebagai contoh:

PS1='\e[33;1m\[email protected]\h: \e[31m\W\e[0m\$ '

Akan menghasilkan PS1 seperti:

[yellow] lucas @ ubuntu: [red] ~ [normal] $

Anda bisa menjadi sangat kreatif dengan ini. Sebagai ide:

PS1='\e[s\e[0;0H\e[1;33m\h    \t\n\e[1;32mThis is my computer\e[u[\[email protected]\h:  \w]\$ '

Letakkan bilah di bagian atas terminal Anda dengan beberapa info acak. (Untuk hasil terbaik, gunakan juga alias clear="echo -e '\e[2J\n\n'".)

Menyingkirkan Escape Sequences

Jika ada sesuatu yang macet saat mengeluarkan warna saat Anda tidak menginginkannya, saya menggunakan baris sed ini untuk menghapus urutan escape:

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

Jika Anda ingin pengalaman yang lebih otentik, Anda juga bisa menghilangkan garis yang dimulai dengan \e[8m, yang memerintahkan terminal untuk menyembunyikan teks. (Tidak didukung secara luas.)

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

Perhatikan juga bahwa ^ itu harus aktual, literal ^ [s. Anda dapat mengetiknya dengan menekan ^ V ^ [dalam bash, yaitu Ctrl + VCtrl + [.

123
Lucas Jones

Saya juga menggunakan:

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

Dan jika Anda suka mewarnai Prompt Anda, vars warna yang ditentukan dapat berguna:

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'

Dan Prompt saya adalah sesuatu seperti ini:

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) memanggil script python di my ~/sbin yang mencetak informasi kontrol versi tentang path saat ini. Ini termasuk dukungan untuk Mercurial, Git, Svn, Cvs, dll. Penulis dari skrip memiliki sumber di sini .

Bash Prompt screenshot

Ini adalah sumber lengkap dari konfigurasi Prompt saya:

86
Kris

grep dan ls telah disebutkan, jika Anda ingin lebih banyak warna lihat Generic Coloriser , tujuan awalnya adalah untuk mewarnai logfiles, tetapi langsung keluar dari kotak itu juga mewarnai ping, traceroute, gcc, make, netstat, diff, last, ldap, dan cvs.

Ini mudah diperpanjang jika Anda tahu regex. Saya telah menambahkan ps dan nmap ke daftar (jika Anda masuk ke grc Saya akan dengan senang hati berbagi file .conf untuk kedua alat tersebut)

(Btw, untuk menginstalnya melalui synaptic, pacman, dan Anda mungkin lebih beruntung mencari "grc")

18
Sygo

Saya telah mengasah .bashrc saya selama bertahun-tahun untuk bekerja pada OSX dan Ubuntu.
Saya juga mengurangi ukurannya menjadi 28 baris dengan pernyataan kondisi ringkas.
Dengan itu, Prompt PS1 saya terlihat seperti: enter image description here

dengan waktu berwarna merah, nama pengguna berwarna hijau, nama mesin berwarna biru muda, pwd berwarna biru gelap dan cabang git berwarna kuning.

Fitur Prompt PS1 saya:

  • menunjukkan cabang git!
  • jalur direktori panjang (lebih dari 6 elemen) 'dipangkas' untuk menampilkan direktori top 3 dan 3 terbawah dengan _ di antara saat itu (itulah bagian pwd sed dari LOCATION).
  • carriage kembali di akhir sehingga Prompt selalu di kiri!

Baris yang relevan dari file .bashrc Saya adalah:

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\]>'

Untuk ls dengan warna saat tersedia dan tidak ada kesalahan saat tidak (yaitu OSX):

ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
12
Michael Durrant

Warna untuk halaman manual ( lebih detail ):

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

Warna untuk grep (1;32 berwarna hijau cerah, lihat tulisan lain di sini untuk warna lain):

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'

Lebih banyak warna untuk 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

Instal grc ( Generic Colouriser ) dan tambahkan ke alias Anda:

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

Warna untuk diff : Terlalu banyak konten untuk suatu fungsi, gunakan skrip dan alias dalam file rc Anda (tidak perlu jika Anda menginstal 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;

Warna untuk bash 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
Adam Katz

Atur Prompt tebal/berwarna. Dari cyberciti.biz dan 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 \$ "

Saya juga berhasil menemukan pengaturan warna yang didukung secara luas, dan yang tidak mencetak karakter gobbledygook di lingkungan yang lebih lama (bahkan FreeBSD4!), Dan tampaknya berfungsi dengan baik jika TERM = vt100, xterm, xterm-color. (Sebagian besar). Dari .bashrc saya:

# 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

Ada alat yang bagus untuk mengatur warna Anda untuk perintah ls - http://geoff.greer.fm/lscolors/

5
Rob Cowell

Hal-hal yang belum dikatakan di sini:

Untuk mewarnai keluaran kompilasi Anda dengan gcc, ada colorgcc oleh Johannes Schlüter

Untuk mewarnai log, ada multitail

Untuk mewarnai stdout, saya mengumpulkan xcol

xcol example

Saya pribadi menggunakan ini dari alat 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

Saya menggunakan variabel-variabel ini dalam skrip saya seperti itu

echo "${red}hello ${yellow}this is ${green}coloured${normal}"

Saya juga suka fungsi kecil ini berwarnaEcho (ditemukan di 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

Maaf, tidak diizinkan memposting lebih banyak tautan

5
nachoparker

Saya sarankan Anda memeriksa ZSH dan pluginnya oh-my-zsh yang memiliki salah satu fitur konsol paling kuat yang saya lihat . Salah satunya adalah memilih tema untuk terminal Anda. Ini adalah contoh dari tema saya ... Dalam tty warna tidak begitu hangat tetapi mereka sama seperti di gambar ini ... Bagaimanapun Anda akan menyukainya!

enter image description here

4
user92622

Untuk melihat keluaran berbeda dalam warna, gunakan colordiff .

Sudo apt-get install colordiff

Pipa segala keluaran format-berbeda ke colordiff:

output of diff piped into colordiff

Ini termasuk beberapa format alternatif diff, seperti -y (bersebelahan.)

Atau, jika dipanggil sendiri (tanpa ada yang disalurkan ke dalamnya) maka ia bertindak sebagai pembungkus di sekitar 'diff', dan warna output. Karenanya saya punya ini di .bashrc saya, alias 'diff' ke colordiff.

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

Untuk mengatur Prompt, saya memilikinya di file .bashrc saya.

#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

Ini memberi saya Prompt yang terlihat seperti ini:

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

Direktori yang berfungsi berwarna hijau. Dan nama pengguna tebal dan cyan kecuali saya menjalankan Shell dengan Sudo, dalam hal ini nama pengguna ("root") menampilkan tebal dan merah.

Saya pribadi sangat suka memiliki karakter kontrol pemformatan disimpan dalam variabel karena membuat membaca kode untuk mengatur Prompt lebih mudah. Ini juga membuat pengeditan Prompt jauh lebih mudah.

Alasan saya menggunakan tput adalah bahwa itu seharusnya lebih didukung secara universal daripada yang aneh 033[01;31m\] urutan. Juga, sebagai bonus tambahan, jika Anda melakukan echo $PS1 di Prompt, Anda akan melihat Prompt mentah dengan warna alih-alih urutan kontrol yang tidak dapat dipahami itu.

3
Sildoreth

Beberapa dekorasi teks (tebal) untuk dengan mudah membedakan antara root dan Shell non-root. Untuk zsh:

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

Untuk Bash:

if test $UID = 0
    then PS1="\033[1m${PS1}\033[0m"
fi
3
Mischa Arefiev

Saya hanya ingin tahu hal yang sama. Saya punya pendekatan sendiri, tetapi saya mencari alternatif.

Saya menulis bungkus bash di sekitar panggilan program dan menyalurkan outputnya sed. Apa yang saya sukai dari sed adalah ia akan memodifikasi dan mengulang setiap baris segera => tidak banyak buffering. Namun, saya tidak suka bahwa untuk setiap panggilan ke program yang dibungkus, kode sed diuraikan dan dikompilasi.

Sebagai contoh, inilah yang saya lakukan untuk mewarnai keluaran 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

Anda dapat menggunakan cf saya untuk pewarnaan nama file pada baris perintah, ini adalah colorizer berbasis awk kecil cepat yang bekerja melalui pipa - mewarnai nama file di Truecolor sRGB.

Itu punya konfigurasi default berwarna cerah dan tidak seperti itu tidak menderita penalti kinerja untuk menambahkan warna baru. (ls harus memindai seluruh string LS_COLORS untuk setiap miss).

https://github.com/AdamDanischewski/cf

cf usage

cf screenshot

2
A.Danischewski

Saya menemukan Solarized berguna. Ini adalah proyek yang rapi dengan warna seragam untuk banyak aplikasi.

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

2
Vamsi

Alat tujuan umum Python yang bagus untuk mewarnai output perintah adalah ' colout '

Anda memberinya regex dengan grup N, diikuti dengan daftar N warna yang dipisahkan koma. Teks apa pun yang cocok dengan grup akan ditampilkan dalam warna yang sesuai.

Jadi misalnya, jika Anda melihat beberapa hasil tes:

python -m unittest discover -v

Uncolored output of some Python unittests

maka Anda dapat merapikannya dengan:

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

Colored output of some Python unittests

Lihat bagaimana regex saya memiliki tiga grup (tanda kurung) diikuti oleh tiga warna (dan opsional tiga gaya, tapi saya telah menggunakan steno untuk mengatur semua warna menjadi 'tebal', jadi grup 'hitam', yang cocok dengan teks dalam kurung , keluar sebagai abu-abu gelap.)

Perhatikan juga bagaimana saya harus menambahkan 2>&1 hingga akhir permintaan Python, karena output dari unittest ada di stderr, jadi saya memindahkannya ke stdout sehingga saya bisa menyalurkannya ke colout.

Ini umumnya sangat mudah digunakan sehingga saya sering menemukan diri saya membuat doa colout baru dengan cepat, dan menggunakan kembali atau memodifikasi mereka dari sejarah baris perintah saya.

Satu-satunya downside dari itu adalah bahwa ia datang sebagai paket Python, bukan eksekusi mandiri, jadi Anda perlu menginstalnya menggunakan pip, atau Sudo python setup.py install.

2
Jonathan Hartley

Anda dapat mencoba proyek yang membantu mewarnai keluaran skrip juga, yang dinamai ScriptEchoColor di source forge: http://scriptechocolor.sourceforge.net/

ex.:

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

Warna otomatis dapat dikonfigurasi.

Ini adalah contoh yang dilakukan dengan itu: enter image description here

2
Aquarius Power

Saya menggunakan pembungkus warna .

cw adalah pembungkus warna ANSI real-time yang tidak mengganggu untuk perintah umum berbasis unix di GNU/linux. cw dirancang untuk mensimulasikan lingkungan dari perintah yang dieksekusi, sehingga jika seseorang mengetikkan 'du', 'df', 'ping', dll di Shell mereka, ia akan secara otomatis mewarnai output secara real-time sesuai dengan definisi. file yang berisi format warna yang diinginkan. cw memiliki dukungan untuk pewarnaan kecocokan wildcard, pewarnaan tokenized, header/footer, pewarnaan skenario kasus, pewarnaan definisi garis bergantung perintah, dan termasuk lebih dari 50 file definisi yang dibuat sebelumnya.

Ini hampir mulus, tetapi begitu saya menemukan bahwa ps di Shell interaktif mengembalikan output yang berbeda membandingkan ps dalam pipa.

1
user3132194

jika Anda ingin membuat vim penuh warna seperti saya, saya sarankan Anda mengikuti dua langkah:

  1. pelajari cara mengaktifkan fitur dengan mengikuti tautan ini: aktifkan penyorotan sintaks warna dalam vi atau vim .

langkah-langkah kunci dalam tautan:

  1. Edit file ~/.vimrc dengan mengetik perintah: vi ~/.vimrc

  2. Tambahkan opsi berikut: sintaks aktif

  3. Simpan dan tutup file

  4. Uji dengan menjalankan perintah vim: vim foo.sh

  1. temukan skema warna yang Anda suka, dan gunakan. Skema yang saya gunakan: skema yang saya gunakan
0
ZhaoGang

Saya ingin dengan rendah hati mengiklankan publikasi terakhir saya dari ta atau textattr , sebuah perpustakaan dan perintah- alat garis yang bertujuan untuk membuat menambahkan warna dan atribut untuk mempercantik keluaran terminal dari program Anda lebih mudah dengan menerjemahkan spesifikasi yang dapat dibaca manusia ke dalam kode pelarian ANSI.

Sebagai contoh:

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

atau bahkan lebih pendek:

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

atau alternatif:

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

akan memberi Anda sesuatu seperti:

enter image description here

Saat ini perpustakaan ini dapat digunakan dari empat bahasa C, C++, D dan Python selain dari penggunaan commandline dari Shell favorit Anda.

Perhatikan bahwa itu tidak secara otomatis mewarnai output dari program lain. Ini lebih merupakan utilitas untuk membantu Anda dengan tidak harus mengingat kode muskil. Anda hanya perlu menggunakan nama warna yang jelas atau mudah diingat rgb cmyk w(hite) (dari) f singkatan.

Untuk lebih jelasnya kunjungi repo textattr .

0
jamadagni

Untuk Mac Anda dapat menggunakan berikut ini seperti yang ditentukan di sini

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

Jika bash adalah pilihan Anda, saya sarankan oh-my-bash . Jika zsh adalah pilihan Anda, saya sarankan oh-my-zsh . Keduanya mendukung pewarnaan terminal Anda dan keluaran yang berbeda.

0
TimWirtjes