터미널 및 셸 환경에 색상을 지정 하시겠습니까?

저는 대부분의 시간을 Unix 환경에서 작업하고 터미널 에뮬레이터를 사용하는 데 보냅니다. 색상은 출력을 더 유용하고 직관적으로 만들기 때문에 명령 줄에서 색상을 사용하려고합니다.

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

안타깝게도 색상 지원은 터미널 유형, OS, TERM 설정, 유틸리티, 버그가있는 구현 등에 따라 다릅니다.

다음은 설정에서 얻을 수있는 몇 가지 팁입니다. , 많은 실험 후 :

  1. 대부분의 호스트에서 지원되는 TERM=xterm-color를 설정하는 경향이 있습니다 (모두는 아님).
  2. 여러 호스트, 다양한 OS 버전 등에서 작업하고 있습니다. macOS X, Ubuntu Linux, RHEL / CentOS / Scientific Linux 및 FreeBSD의 모든 것을 사용합니다. 가능한 한 간단하고 일반적으로 유지하려고 노력하고 있습니다.
  3. GNU screen를 사용하여 많은 작업을 수행합니다. 이는 또 다른 재미를 더합니다.
  4. 많은 OS에서 dircolors와 같은 항목을 설정하고 기본적으로 수백 개의 다른 호스트에서이를 수정하고 싶지 않습니다. 그래서 저는 기본값을 고수하려고합니다. 대신 터미널의 색상 구성을 조정합니다.
  5. 일부 Unix 명령 (ls, grep, less, vim) 및 배시 프롬프트 . 이러한 명령은 표준 “ ANSI 이스케이프 시퀀스 “를 사용하는 것 같습니다. 예 :

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

.bashrc를 게시하고 내 질문에 답하겠습니다 Jeopardy Style .

댓글

  • fyi 내 접근 방식 (아래 답변 참조)은 OSX 및 Linux 차이 문제를 해결합니다. 예를 들어 하나의 색상은 ls -G이고 다른 하나는 ls –color-auto입니다
  • 열에 색을 칠하는 도구를 본 사람이 있습니까? column -t --color입니까?

답변

다음은 수행 할 수있는 몇 가지 작업 :

편집자 + 코드
많은 편집기에 구문이 있습니다. 강조 지원. 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 생성 :

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

이것으로 정말 창의력을 발휘할 수 있습니다. 아이디어 :

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" 

보다 확실한 경험을 원한다면 , 텍스트를 숨기도록 터미널에 지시합니다. (널리 지원되지는 않습니다.)

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

또한 이러한 ^ [은 실제 문자 그대로 ^ [s. bash에서 ^ V ^ [를 눌러 입력 할 수 있습니다. 즉, Ctrl + V , Ctrl + [입니다. .

설명

  • 첫 번째 PS1 줄은 PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '와 같아야합니다. 네 번째 백 슬래시 뒤에 불필요한 x가 있습니다.
  • 이스케이프는 \[...\]로 묶어야합니다. 그렇지 않으면 두 번째 줄의 명령이 첫 번째 줄을 덮어 씁니다. PS1 = ‘ [ \ e [33; 1m ] \ u @ \ h : [ \ e [31m ] \ W \ e [0m \ $ ‘
  • ls --color=always가 작동하지 않습니다 ‘.@Michael Durrant ‘의 접근 방식이 더 좋습니다. ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'

답변

또한 다음을 사용합니다.

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_BLACK="\e[0;30m" export COLOR_GRAY="\e[1;30m" export COLOR_RED="\e[0;31m" export COLOR_LIGHT_RED="\e[1;31m" export COLOR_GREEN="\e[0;32m" export COLOR_LIGHT_GREEN="\e[1;32m" export COLOR_BROWN="\e[0;33m" export COLOR_YELLOW="\e[1;33m" export COLOR_BLUE="\e[0;34m" export COLOR_LIGHT_BLUE="\e[1;34m" export COLOR_PURPLE="\e[0;35m" export COLOR_LIGHT_PURPLE="\e[1;35m" export COLOR_CYAN="\e[0;36m" export COLOR_LIGHT_CYAN="\e[1;36m" export COLOR_LIGHT_GRAY="\e[0;37m" export COLOR_WHITE="\e[1;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 등을 지원합니다. 스크립트 작성자는 여기에 소스 가 있습니다.

배시 프롬프트 스크린 샷

내 프롬프트 구성의 전체 소스 :

댓글

  • 위를 사용했을 때 발생한 줄 문제에 대한 솔루션은 여기를 참조하십시오. PS1 : stackoverflow.com/questions/5087036/ …
  • 나 ‘ 프롬프트의 색상에 대해 이스케이프 처리 된 괄호를 반영하도록 답변을 업데이트했습니다. 감사합니다!
  • $LSCOLORS$CLICOLOR는 BSD ls 용입니다. GNU ls (Linux)는 다른 구문으로 $LS_COLORS를 사용합니다. GNU가 내 집처럼 느껴지므로 LSCOLORS=exgxfxDacxBaBaCaCaeaEa를 사용하여 BSD에서 GNU ‘의 색상을 모방합니다.
  • grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
  • 수정 내용을 적용하려면 .bashrc 파일을 가져와야 할 수 있습니다. 다음 명령으로 수행 할 수 있습니다. source /path/to/.bashrc

답변

grepls는 이미 언급되었습니다. 더 많은 색상을 원하면 Generic Coloriser 를 확인하세요. , 초기 목적은 로그 파일에 색상을 지정하는 것이었지만 기본적으로 ping, traceroute, , make, netstat, diff, last, ldapcvs.

다음과 같은 경우 쉽게 확장됩니다. 정규식을 알고 있습니다. psnmap를 목록에 추가했습니다 (grc 두 도구에 대한 .conf 파일을 공유하게되어 기쁩니다.

(Btw, synaptic,

및 검색 운이 더 좋을 수 있습니다. for “grc”)

댓글

  • grc는 이제 ps입니다. ‘ nmap 색상에 관심이 있습니다. grc를 업그레이드 할 때 새로운 명령을 흡수하는 방식으로 모든 별칭을 지정하는 방법에 대한 내 대답도 참조하십시오.
  • 그것을 알아 냈습니다. 여기에 ‘ 내 conf.nmap (및 그 밖의 모든 것)이 있습니다. gist.github.com/sygo/844982#file-conf -nmap -infosec에서 작업하는 것으로 나타났습니다. conf.hexdump가 흥미로울 수 있지만 아직 완료하지 않았습니다. ‘ 아직 완료하지 않았습니다.
  • 감사합니다. @Sygo. 저는 ‘ 요점을 분기하고 수정했습니다. ‘ 실제로 git (github ‘의 요점은 제외)과 데이터를 커밋 한 적이 없으며 다시 병합을 제안하는 방법을 알 수 없습니다. (‘ 요점이 너무 단순하기 때문이라고 생각합니다.)
  • ‘ t는 ‘ 요점이며 적절한 저장소가 아니기 때문입니다. 그래도 포크를 확인했고 ‘ 확실히 귀하의 버전을 제공하고 있습니다. ‘ 16 진수 덤프가 무엇으로 변할지 궁금합니다 …

Answer

저는 OSX와 Ubuntu 모두에서 작업하기 위해 수년 동안 .bashrc를 연마했습니다.
또한 압축 조건문을 사용하여 28 줄로 크기를 줄였습니다.
함께 , 내 PS1 프롬프트는 다음과 같습니다. 여기에 이미지 설명 입력

빨간색 시간, 녹색 사용자 이름, 연한 파란색 컴퓨터 이름, 진한 파란색 암호 및 git branch in yellow.

내 PS1 프롬프트의 특징 :

  • show git branch!
  • 긴 디렉토리 경로 (6 개 이상의 요소)는 ” trimmed “는 그 사이에 _가있는 상위 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의 경우 d 그렇지 않은 경우 오류 없음 (예 :OSX) :

ls --color=al > /dev/null 2>&1 && alias ls="ls -F --color=al" || alias ls="ls -G" 

댓글

  • ls OS X에서는 export CLICOLOR=1를 사용합니다.
  • @ThomasW를 사용하지만 Linux에서는 사용하지 않습니다. :-p 둘 다 사용합니다.
  • li>

  • 그럼에도 불구하고 ThomasW는 MacOS 10의 ls에서 색상을 사용할 수 없다는 점에서 대답이 잘못되었다고 지적하는 것이 맞습니다. 대답은 또한 오류가 있습니다. 여기의 프롬프트 문자열은 실제로 결함이 있습니다. \[\] 이 답변을 복사하는 한 명 이상에게 문제를 일으켰습니다 .

답변

맨 페이지의 색상 ( 자세히 ) :

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 

grc ( 일반 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 

bash 프롬프트 데모

댓글

  • 스크린 샷에 대한 찬성
  • PSWD() 함수는 POSIX와 호환되었지만 ‘ 훨씬 쉽게 사용할 수 있습니다. bash / zsh 하위 문자열 처리 사용. POSIX 버전에 대해서는 개정 6 을 참조하십시오. POSIX 버전은 많은 물음표를 포함하고 터미널에 전혀 적응할 수 없습니다. ‘ 폭. ‘ 스크린 샷을 업데이트하지 않았지만 ‘ 80 자 너비에서 약간만 변경되었습니다.
  • CLICOLOR=1 ‘ FREEBSD 11.2에서 작동하지 않습니다
  • @SimonC. – FreeBSD 시스템에서 BSD가 아닌 GNU 유틸리티를 사용하고있을 수 있습니다. CLICOLOR=1 ls는 BSD (이전 BSD에서 ls -g)를 사용하는 ls -G와 동일한 작업을 수행해야합니다. ls --color가 작동하면 (오류 없음) ‘ GNU ‘의 ls 명령 및 $CLICOLOR는 무시됩니다.
  • @SimonC. – 변경 사항을 적용하려면 실제로 ~/.bashrc를로드해야합니다. source ~/.bashrc를 실행하거나 새 bash 세션을 시작하십시오 (터미널을 시작하거나 bash를 실행하십시오).

답변

굵게 / 색상 프롬프트를 설정합니다. cyberciti.biz BashFAQ

저는 또한 광범위하게 지원되는 색상 설정을 찾아 냈습니다.이 설정은 이전 환경 (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 

댓글

답변

여기에 아직 언급되지 않은 사항 :

gcc를 사용하여 컴파일 출력에 색상을 지정하려면 , Johannes Schlüter의 colorgcc가 있습니다.

로그를 채색하기 위해 멀티 테일이 있습니다.

표준 출력을 채색하기 위해 xcol

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

또한이 작은 함수 colorsEcho (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 

죄송합니다. 더 많은 링크를 게시 할 수 없습니다.

댓글

  • 안녕하세요. 프롬프트 경로에 대한 플래그를 어떻게 만드나요? 삼각형 끝이있는 직사각형 막대를 언급하고 있습니다. 감사합니다
  • 우분투 gnu 터미널에서도 작동합니까?
  • lnav 는 색상이 지정된 로그 파일을 표시하는 훌륭한 도구이기도합니다.

답변

ls 명령에 대한 색상 설정을위한 좋은 도구가 있습니다.- http://geoff.greer.fm/lscolors/

답변

ZSH 및 플러그인 oh-my-zsh 는 제가 본 가장 강력한 콘솔 기능 중 하나입니다. 그중 하나는 내 테마의 예입니다 … tty에서는 색상이 너무 따뜻하지는 않지만이 그림과 같은 색입니다 … 어떤 식 으로든 좋아할 것입니다!

여기에 이미지 설명을 입력하세요.

댓글

  • 가능하다면 Oh-My-ZSH에 대해 반대 투표하겠습니다. 터미널에서 광범위하게 작업하는 시스템 엔지니어로서, 내 워크 플로우에 zsh / oh-my-zsh를 채택하려는 사람으로서 저는 솔직히 내가 ZSH를 절대 추천하지 않을 것이라고 말할 수 있습니다. 물론 zsh를 다른 셸의 이름을 딴 파일에 심볼릭 링크하고 해당 셸을 에뮬레이트 할 수 있지만 그렇게하면 ‘ .bashrc, .bash_profile 등을 읽지 않습니다. 또한 , .zprofile 또는 .zshrc 파일에 emulate bash를 넣을 수 없습니다. BASH의 고급 기능으로 작업하는 사람에게는 당신을 물릴 많은 미묘함이 있습니다. BASH는 더 나은 sh입니다.
  • ZSH가 BASH보다 나은 유일한 것은 명령 완성이지만 BASH에서 프로그래밍 할 수도 있습니다. 가끔 일상적인 작업을 제외하고 셸을 사용하지 않는 사람은 ‘ ZSH를 채택해야하지만 ‘ 필요한 사람에게는 적합하지 않습니다. 쉘을 광범위하게 사용하십시오. =~ 연산자는 당신을 물릴 수 있고, ZSH가 배열을 처리하는 방식은 당신을 물릴 수 있습니다. ZSH / Oh-My-ZSH를 약 9 개월 동안 사용한 후에는 충분했습니다. 직접 작성한 사용자 지정 테마를 사용하고 있었고 BASH로 포팅하고 자신의 git 프롬프트 라인을 작성했으며 ‘ 한 번도 뒤돌아 본 적이 없습니다. 이제 더 이상 이식성에 대해 걱정하지 않습니다.
  • ” 내가 본 것 중 가장 강력한 콘솔 기능 중 하나가 있습니다. 그중 하나는 터미널의 테마를 선택하는 것입니다. ”
  • @JonathanHartley, 댓글이 불완전한 것 같습니다. ?
  • 걱정 해 주셔서 감사합니다. 제 의견에는 제가 말하고자하는 모든 내용이 나와 있습니다.

답변

Diff 출력을 컬러로 보려면 colordiff 를 사용합니다.

sudo apt-get install colordiff 

파이프 colordiff 로의 diff 형식 출력 :

colordiff로 파이프 된 diff의 출력

여기에는 -y (나란히)와 같은 diff의 대체 형식 중 일부가 포함됩니다.

또는 독립 실행 형 ( 파이프에 아무것도 넣지 않고) “diff”를 감싸는 래퍼 역할을하고 출력에 색상을 지정합니다. 따라서 .bashrc에 “diff”를 colordiff로 별칭으로 지정합니다.

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

댓글

  • .bashrc 예제에 마지막 fi, 한 줄 명령으로 변환 할 수 있습니다. type colordiff &> /dev/null && alias diff='colordiff'

Answer

루트 및 비 루트 셸을 쉽게 구분하기위한 일부 텍스트 장식 (굵게 표시). Zsh :

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

Bash :

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

댓글

  • 셸을 지정하십시오. 질문 ‘의 유일한 쉘 특정 태그는 bash 이지만 귀하의 코드는 .
  • @manatwork : 죄송합니다. Zsh라고 언급하는 것을 잊었습니다. 내 게시물을 업데이트했습니다.

답변

그냥 똑같은 것이 궁금했습니다. 나만의 접근 방식이 있지만 대안을 찾고 있습니다.

프로그램 호출 주위에 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" 

Answer

프롬프트 설정을 위해 .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를 수행하면 다음과 같은 원시 프롬프트가 표시됩니다. 이해할 수없는 제어 시퀀스 대신 색상

답변

스크립트 출력에 색상을 지정하는 데 도움이되는 프로젝트를 시도해 볼 수도 있습니다.이 프로젝트는 Source forge에서 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 

자동 색상을 구성 할 수 있습니다.

이것은 예를 들면 다음과 같습니다. 여기에 이미지 설명 입력

답변

명령 출력을 채색하기위한 훌륭한 범용 Python 도구는 “ colout

N 개의 그룹이있는 정규식을 제공 한 다음 쉼표로 구분 된 N 색상 목록을 제공합니다. 그룹과 일치하는 모든 텍스트는 해당 색상으로 표시됩니다.

예를 들어 “테스트 출력을보고있는 경우 :

python -m unittest discover -v 

일부 Python 단위 테스트의 무색 출력

그런 다음 가문비를 칠 수 있습니다. 다음으로 구성 :

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

일부 Python 단위 테스트의 색상 출력

내 정규식에 3 개의 그룹 (괄호)과 3 개의 색상 (선택적으로 3 개의 스타일)이있는 방법을 확인하십시오. 그러나 모든 색상을 “굵게”설정하기 위해 속기를 사용했습니다. , 따라서 괄호 안의 텍스트와 일치하는 “검은 색”그룹은 진한 회색으로 나옵니다.)

어떻게 끝에 2>&1를 추가해야 했는지도 참고하십시오. unittest의 출력이 stderr에 있기 때문에 stdout으로 전송하여 colout으로 파이프 할 수 있기 때문입니다.

이것은 일반적으로 사용하기가 너무 쉬워서 자주 새로 만드는 것을 발견했습니다. colout invocat 즉석에서 이온을 사용하고 명령 줄 기록에서 재사용하거나 수정합니다.

유일한 단점은 독립 실행 형 실행 파일이 아닌 Python 패키지로 제공되므로 설치해야합니다. pip 또는 sudo python setup.py install를 사용합니다.

Answer

Solarized가 유용하다고 생각합니다. 다양한 애플리케이션을위한 균일 한 색상의 깔끔한 프로젝트입니다.

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

답변

명령 줄에서 파일 이름 색상 지정을 위해 my cf를 사용할 수 있습니다. “파이프를 통해 작동하는 빠른 awk 기반 색상 화기입니다. Truecolor sRGB에서 파일 이름 색상을 지정합니다.

밝은 색상이 있습니다. 기본 구성이며 ls와 달리 새 색상을 추가해도 성능이 저하되지 않습니다. (ls는 각 누락에 대해 전체 LS_COLORS 문자열을 스캔해야합니다).

https://github.com/AdamDanischewski/cf

cf 사용법

cf 스크린 샷

답변

Mac의 경우 여기

에서 지정한대로 다음을 사용할 수 있습니다.

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

답변

색상 래퍼 를 사용합니다.

cw는 GNU / 리눅스에서 일반적인 유닉스 기반 명령을위한 비 간섭 실시간 ANSI 색상 래퍼입니다. cw는 실행되는 명령의 환경을 시뮬레이션하도록 설계되어 사용자가 쉘에 “du”, “df”, “ping”등을 입력하면 정의에 따라 실시간으로 출력에 자동으로 색상을 지정합니다. 원하는 색상 형식을 포함하는 파일. cw는 와일드 카드 일치 색상 지정, 토큰 화 된 색상 지정, 머리글 / 바닥 글, 케이스 시나리오 색상 지정, 명령 줄 종속 정의 색상 지정을 지원하며 50 개 이상의 사전 제작 된 정의 파일을 포함합니다. >

거의 매끄럽지 만 대화 형 셸의 ps가 파이프의 ps를 비교하는 다른 출력을 반환한다는 사실을 알게되었습니다.

답변

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

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

링크의 주요 단계 :

  1. 다음 명령을 입력하여 ~ / .vimrc 파일을 편집합니다. vi ~ /.vimrc

  2. 다음 옵션을 추가합니다. 구문 on

  3. 파일 저장 및 닫기

  4. vim 명령을 실행하여 테스트합니다. vim foo.sh

  1. 원하는 색 구성표를 찾아 사용합니다. 내가 사용하는 체계 : 사용중인 체계

댓글

  • 외부 소스에 대한 링크를 사용할 때 ” 링크에 대한 컨텍스트 제공 ” 부분 (중요 부분 인용)을 확인해야합니다. 가이드의 관련 부분 : unix.stackexchange.com/help/how-to-answer

답변

bash를 선택한 경우 oh-my-bash 를 권장합니다. zsh를 선택한 경우 oh-my-zsh 를 권장합니다. 둘 다 터미널의 색상 화와 다른 출력을 지원합니다.

답변

내 최근 간행물 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 4 개 언어로 사용할 수 있습니다. .

다른 프로그램의 출력에 자동으로 색상을 지정하지 않습니다. 난해한 코드를 기억하고 있습니다. 분명한 색상 이름이나 기억하기 쉬운 rgb cmyk w (hite) (of) f 만 사용하면됩니다. 약어.

자세한 내용은 textattr 저장소 를 방문하세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다