Színezi a terminált és a shell környezetet?

Időm nagy részét Unix-környezetekben dolgozom, és terminálemulátorokat használok. Megpróbálom a színt használni a parancssorban, mert a szín a kimenetet hasznosabbá és intuitívabbá teszi. Milyen trükköket használsz? Milyen buktatókkal találkozott?

Sajnos a színtámogatás a terminál típusától, az operációs rendszertől, a TERM beállításától, a segédprogramtól, a hibás megvalósításoktól stb. Függően változik.

Íme néhány tipp a beállításomból , sok kísérletezés után:

  1. hajlamos vagyok beállítani a TERM=xterm-color beállítást, amelyet a legtöbb gazdagép (de nem az összes) támogat.
  2. Számos különféle gazdagépen, különböző operációs rendszer verziókon dolgozom, stb. A macOS X-től, az Ubuntu Linux-tól, az RHEL / CentOS / Scientific Linux-tól és a FreeBSD-től kezdve mindent használok. Igyekszem a dolgokat egyszerűnek és általánosnak tartani, ha lehetséges.
  3. Egy csomó munkát elvégzek a GNU screen használatával, ami újabb szórakoztató réteget ad hozzá.
  4. Sok operációs rendszer olyanokat állít be, mint dircolors és alapértelmezés szerint, és ezt nem akarom módosítani száz különböző gazdagépen. Tehát megpróbálok kitartani az alapértelmezések mellett. Ehelyett módosítom a terminálom színkonfigurációját.
  5. Használjon színt néhány Unix parancshoz (ls, grep, less, vim) és a Bash prompt . Úgy tűnik, hogy ezek a parancsok a szokásos “ ANSI menekülési szekvenciákat ” használják. Például:

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

Feladom a .bashrc és válaszolok saját kérdésemre Jeopardy Style .

Megjegyzések

  • Az én megközelítésem (lásd az alábbi választ) az OSX és Linux különbségekkel kapcsolatos problémákat kezel, például az egyik színe az ls -G és a másikon ls –color-auto
  • Látott valaki eszközt az oszlopok színezéséhez? Ez egy column -t --color?

Válasz

Itt van egy néhány tennivaló:

Szerkesztők + Kód
Sok szerkesztő rendelkezik szintaxissal kiemelve a támogatást. vim és emacs alapértelmezés szerint be van kapcsolva. engedélyezheti a nano alatt.

Szintetizálhatja a kiemelési kódot a terminál az Pygments parancssori eszközként történő használatával.

grep
grep --color=auto kiemeli az összes mérkőzést. A export GREP_OPTIONS="--color=auto" használatával álnév nélkül is állandóvá teheti azt. Ha --color=always -t használ, akkor “ll még csövezéskor is színt használ , ami összekeveri a dolgokat.

ls

ls --color=always

A következő színeket adta meg:

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

(tipp: dircolors hasznos lehet)

PS1
Beállíthatja, hogy a PS1 (shell parancssor) színeket használjon. Például:

PS1="\e[33;1m\u@\h: \e[31m\W\e[0m\$ " 

Olyan PS1-t fog készíteni, mint:

[sárga] lucas @ ubuntu: [piros] ~ [normál] $

Ezzel igazán kreatív lehet. Ötletként:

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

Sávot tesz a terminál tetejére néhány véletlenszerű információval. (A legjobb eredmény érdekében használja a következőt is: alias clear="echo -e "\e[2J\n\n"".)

A menekülési szekvenciák megszabadulása

Ha valami elakadt, amikor színt ad ki, amikor nem akarja, akkor ezt használom sed sor a menekülési szekvenciák eltávolításához:

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

Ha hitelesebb élményre vágysz, akkor megszabadulhat a , amely utasítja a terminált a szöveg elrejtésére. (Nem támogatott széles körben.)

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

Ne feledje, hogy ezeknek a ^ [s ténylegeseknek, szó szerinti ^ [s-nek kell lenniük. Beírhatja őket a ^ V ^ [megnyomásával a bash-ban, azaz Ctrl + V , Ctrl + [ .

Megjegyzések

  • Az első PS1 sornak így kell lennie: PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '. A negyedik visszavágás után felesleges x van.
  • A menekülési lépéseket be kell zárni az \[...\] be, különben a második sorban található parancsok felülírják az első sort. PS1 = ‘ [ \ e [33; 1m ] \ u @ \ h: [ \ e [31m ] \ W \ e [0m \ $ ‘
  • A ls --color=always nem működik ‘.@Michael Durrant ‘ megközelítése jobb ehhez: ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'

Válasz

Én is ezt használom:

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

És ha szereted színezni a felszólítást, akkor a meghatározott színváltozatok legyen hasznos:

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" 

És akkor az én üzenetem valami ilyesmi:

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

A $ (vcprompt) egy python parancsfájlt hív meg a ~ / sbin fájlomban, amely verzióvezérlő információkat nyomtat ki az aktuális útvonalról. Magában foglalja a Mercurial, a Git, a Svn, a Cvs stb. Támogatását. A szkript szerzőjének itt található az forrás .

Bash gyors képernyőképe

Ez a azonnali konfigurációm teljes forrása :

megjegyzések

  • Itt találhat megoldást egy olyan vonalproblémára, amelyet a fentiek használatakor kaptam PS1: stackoverflow.com/questions/5087036/…
  • I ‘ frissítette a választ, hogy tükrözze a felszólítás színeinek elkerült zárójelét. Köszönöm!
  • $LSCOLORS és $CLICOLOR a BSD ls-hez tartoznak. A GNU ls (Linux) a $LS_COLORS -et más szintaxissal használja. Mivel a GNU otthonomnak érzi magát, a LSCOLORS=exgxfxDacxBaBaCaCaeaEa t használom a GNU ‘ színek utánzására a BSD-n.
  • grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
  • Előfordulhat, hogy a módosítás hatékonyságához a .bashrc fájlt kell beszereznie. A következő paranccsal teheti meg. source /path/to/.bashrc

Válasz

grep és ls már említettük, ha sokkal több színt szeretnél, nézd meg a Általános színezőt , kezdeti célja a naplófájlok színezése volt, de rögtön a dobozból kiszínezi a ping, traceroute, gcc, make, netstat, diff, last, ldap és cvs.

Könnyen meghosszabbítható, ha ismerem a regexeket. Hozzáadtam ps és nmap listát (ha bekerül a grc Örömmel fogom megosztani a két eszköz .conf fájljait)

(Btw, a synaptic, pacman, és hasonlóan lehet, hogy nagyobb szerencsével jár a keresés a “grc” -hez)

Megjegyzések

  • grc mostantól támogatja a ps alapértelmezés szerint. ‘ érdekelne a nmap színezésed. Lásd még azt a válaszomat, hogy mindezeket álnéven aliasítottam úgy, hogy az új parancsokat elnyeljen a grc frissítésekor.
  • Ezt észrevettem. itt ‘ s a konf.nmap (és minden más, valóban) gist.github.com/sygo/844982#file-conf -nmap – Észrevettem, hogy infosec-ben dolgozol, érdekesnek találhatod a conf.hexdump-ot, pedig még nem fejeztem be ‘.
  • Köszönöm @Sygo. ‘ elágaztam és felülvizsgáltam a lényegét. Én ‘ még soha nem adtam le adatokat git-tel (nemhogy a github ‘ s lényege), és nem tudom kitalálni, hogyan javasolhatnám az egyesítést. neked (én ‘ feltételezem, hogy ez azért van, mert a lényeg túlságosan leegyszerűsödött).
  • gyanítom, hogy ‘ t, mert ‘ lényege, és nem megfelelő tárház. Megnéztem a villáját, és ‘ határozottan engedtem a verzióját. ‘ kíváncsi vagyok, mivé válik az a hex dump …

Válasz

Az évek során csiszoltam a .bashrc fájlt, hogy az OSX-en és az Ubuntuban is dolgozzak.
Kompakt állapotmegállapításokkal méretét is 28 sorra csökkentettem.
Vele , a PS1 felszólításom így néz ki: ide írja be a kép leírását

idővel piros színnel, felhasználónév zöld színnel, a gép neve világoskék színnel, pwd sötétebb kék színnel és git elágazás sárga színnel.

A PS1 parancsom jellemzője:

  • a git elágazást mutatja!
  • hosszú könyvtár útvonalak (több mint 6 elem) ” a “felső” és az “3” könyvtárak megjelenítéséhez “div div = = e69f76a788”>

között (ekkor a LOCATIONpwd sedrésze található).

  • visszatérés a kocsihoz a végén, hogy az utasítás mindig a bal oldalon legyen!
  • A .bashrc fájlom releváns sorai a következők:

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

    Színes ls esetén, ha elérhető d nincs hiba, ha nem (azazOSX):

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

    Megjegyzések

    Válasz

    man oldalak ( részletek színei ):

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

    A grep (1;32 élénkzöld, a többi színért lásd itt a többi bejegyzést):

    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" 

    További színek 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 ( Általános színező ), és adja hozzá az álneveihez:

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

    A diff : Túl sok tartalom van egy függvényhez, használjon egy szkriptet és álnevet használjon az rc fájlban (felesleges, ha a grc programot telepítette):

    #!/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 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 

    bash prompt bemutatója

    Megjegyzések

    • Szavazat egy képernyőképre
    • A PSWD() funkcióm korábban POSIX-kompatibilis volt, de ‘ sokkal könnyebb bash / zsh szubsztringkezelés használatával. Lásd a 6. verziót a POSIX verzióhoz, amely sok kérdőjelet tartalmaz, és egyáltalán nem volt alkalmazható a terminálhoz ‘ szélesség. Nem frissítettem a képernyőt ‘, de ‘ csak kismértékű változás történt a 80 karakteres szélesség mellett.
    • CLICOLOR=1 nem működik ‘ nálam a FREEBSD 11.2 verzióval
    • @SimonC. – Lehet, hogy a FreeBSD rendszerén GNU segédprogramokat használ, nem pedig a BSD-ket. CLICOLOR=1 ls ugyanazt kell tennie, mint ls -G a BSD használatával (ls -g régebbi BSD-ken). Ha a ls --color működik (nincs hiba), akkor ‘ a GNU ‘ s ls parancsot és a $CLICOLOR parancsot figyelmen kívül hagyják.
    • @SimonC. – A módosítások életbe lépéséhez tényleg be kell töltenie a ~/.bashrc fájlt. Vagy futtassa source ~/.bashrc, vagy indítson új bash munkamenetet (indítson terminált, vagy futtasson bash).

    Válasz

    Állítson be félkövér / színes kérdést. A cyberciti.biz és a 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 \$ " 

    Sikerült olyan színbeállításokat is találnom, amelyek széles körben támogatottak, és amelyek régebbi környezetekben (még a FreeBSD4-ben sem) nyomtatnak gobbledygook karaktereket, és úgy tűnik, hogy jól működnek, ha TERM = vt100, xterm , xterm-color. (Javarészt). Az én .bashrc fájlomból:

    # 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 

    Megjegyzések

    Válasz

    Olyan dolgok, amelyeket itt még nem mondtak el:

    Színezd összeállításaid kimenetét gcc-vel , van Johannes Schlüter colorgcc

    A naplók színezéséhez többrétegű

    Bármely stdout színezéséhez összeállítottam xcol

    xcol példa

    Én személy szerint használom ezeket az xcol eszközből.

    #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 

    Ezeket a változókat a parancsfájljaimhoz hasonlóan használom

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

    Nekem is tetszik ez a kis colorEcho funkció (megtalálható a Verem túlcsordulásában)

    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 

    Sajnálom, további linkeket nem lehet közzétenni

    Megjegyzések

    • Helló, hogyan készíti el a jelzéseket a gyors elérési útvonalhoz? Megemlítem a háromszög végű téglalap alakú rudakat Köszönöm
    • működik ez egy ubuntu gnu terminálon is?
    • lnav szintén kiváló eszköz a színezett naplófájlok megjelenítésére

    Válasz

    Van egy jó eszköz az ls parancs színeinek beállításához – http://geoff.greer.fm/lscolors/

    Válasz

    Javaslom, nézze meg a ZSH és a bővítménye oh-my-zsh , amely az egyik leghatékonyabb konzolfunkcióval rendelkezik, amit láttam. Az egyik a témát választja a terminálod. Ez a témám példája … A tty-ben a színek nem annyira melegek, de ugyanolyanok, mint ezen a képen … Bárhogy is fogod szeretni!

    írja ide a kép leírását

    Megjegyzések

    • Ha tehetném, ezt visszavetném az Oh-My-ZSH-hoz javaslat: Rendszermérnökként, aki sokat dolgozik a Terminálban, és valakiként, akik megpróbálták befogadni a zsh / oh-my-zsh-t a munkafolyamatomba, Őszintén mondhatom, hogy soha nem ajánlom senkinek a ZSH-t. Persze, összekapcsolhatja a zsh fájlt bármely más shellről elnevezett fájllal, és utánozhatja ezt a shellt, de ha ezt megteszi, akkor nem ‘ nem olvassa el a .bashrc, .bash_profile stb. , nem helyezheti el a emulate bash fájlt .zprofile vagy .zshrc fájljaiba. Bárki számára, aki fejlett funkciókkal dolgozik a BASH-ban, sok finomság fog megharapni. A BASH jobb sh.
    • Az egyetlen dolog, ami a ZSH-n kívül van a dobozból, és ami jobb, mint a BASH, az a parancsfeltöltés, de még ez is a BASH-ban programozható. Lehet, hogy valaki, aki ‘ nem használja a héjat, kivéve az alkalmi hétköznapi feladatokat, elfogadja a ZSH-t, de ‘ senki számára nem alkalmas használja a héjat széles körben. a =~ operátor meg tudja harapni, ahogy a ZSH kezeli a tömböket, stb. A ZSH / Oh-My-ZSH körülbelül 9 hónapos használata után elegem van belőle. Olyan egyéni témát használtam, amelyet magam írtam, átportoltam a BASH-ba, és megírtam a saját git parancssoromat, és soha ‘ soha nem néztem vissza. Most már nem aggódom a hordozhatóság miatt.
    • ” az egyik leghatékonyabb konzolfunkcióval rendelkezik, amelyet láttam. Az egyikük a terminál témáját választja. ”
    • @JonathanHartley, a megjegyzésed úgy néz ki, mintha hiányos lett volna. ?
    • Köszönöm aggodalmát, de a megjegyzésem mindent elmond, amit mondani akartam.

    Válasz

    A diff kimenet színes megtekintéséhez használja a colordiff elemet.

    sudo apt-get install colordiff 

    Cső bármilyen diff formátumú kimenet colordiff-be:

    a diford kimenete a colordiff-be vezetve

    Ez magában foglalja a diff néhány alternatív formátumát, például a -y (egymás mellett.)

    Alternatív megoldásként, ha önálló ( anélkül, hogy bármit is belevezetnének), akkor a “diff” körüli burkolóként működik, és kiszínezi a kimenetet. Ezért van ez a .bashrc fájlban, más néven a “diff” a colordiff-hez.

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

    Megjegyzések

    • A .bashrc példából hiányzik a végső fi, és átalakítható egysoros parancssá: type colordiff &> /dev/null && alias diff='colordiff'

    Válasz

    Néhány szövegdekoráció (félkövér) a gyökér és a nem gyökérhéj közötti különbségtételhez. Zsh esetében:

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

    Bash esetén:

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

    megjegyzések

    • Kérjük, adja meg a héját. A ‘ kérdés egyetlen héjspecifikus címkéje a bash , de úgy érzem, hogy a kódja nem bash.
    • @manatwork: sajnálom, elfelejtettem megemlíteni, hogy Zsh volt. Frissítettem a bejegyzésemet.

    Válasz

    Csak ugyanerre gondoltam. Van saját megközelítésem, de alternatívákat keresek.

    Bash csomagolókat írok a programhívások köré, és a kimenetüket átadom, bár sed. A sed az, hogy azonnal módosítja és visszhangozza az egyes sorokat => nem sok pufferelés. Nem szeretem azonban, hogy minden beburkolt program hívása esetén a sed kód elemzésre és fordításra kerül.

    Például ezt csinálom a ip kimenetének színezéséhez:

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

    Válasz

    A prompt beállításához ezt a .bashrc fájlom tartalmazza.

    #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 

    Ez egy olyan üzenetet ad nekem, amely így néz ki:

    user@host(bash): ~/bin > 

    A munkakönyv zöld színű És a felhasználó neve félkövér és cián, hacsak nem a sudo paranccsal futtattam a héjat, ebben az esetben a felhasználónév (“root”) félkövéren és pirosan jelenik meg.

    Nekem személy szerint nagyon tetszik, hogy a formázásvezérlő karakterek változókban vannak tárolva, mert ez megkönnyíti a parancs beállításának kódját. Ez a prompt sokkal könnyebb szerkesztését is megkönnyíti.

    Azért használom a tput -t, mert állítólag általánosabban támogatott mint a furcsa 033[01;31m\] szekvenciák. További bónuszként, ha echo $PS1 -t hajt végre a promptnál, a nyers színek az érthetetlen vezérlési szekvenciák helyett.

    Válasz

    Kipróbálhat egy olyan projektet, amely segít a szkriptek kimenetének színezésében is, annak neve ScriptEchoColor a forrás hamisításakor: http://scriptechocolor.sourceforge.net/

    pl .:

    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 

    Az automatikus színek konfigurálhatók.

    Ez egy példa vele: írja ide a kép leírását

    Válasz

    A parancsok kimenetének színezéséhez nagyszerű általános célú Python eszköz a “ colout

    Regexet adsz N csoporttal, amelyet N vesszővel vesszővel elválasztott lista követ. Minden szöveg, amely megfelel egy csoportnak, a megfelelő színnel jelenik meg.

    Tehát például, ha valamilyen teszt kimenetet néz meg:

    python -m unittest discover -v 

    Egyes Python-unitestek színezetlen kimenete

    akkor lucfenyőzhet a következővel:

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

    Egyes Python-unitestek színes kimenete

    Nézze meg, hogy a regexemnek három csoportja van (a zárójel), majd három szín (és opcionálisan három stílus), de rövidítéssel az összes színt félkövérre állítottam , így a zárójelben lévő szöveget egyező “fekete” csoport sötétszürke színnel jelenik meg.)

    Vegye figyelembe azt is, hogy miként kellett hozzáadnom a 2>&1 -t a Python invokációé, mert az unittest kimenete a stderr-n van, ezért áthelyeztem az stdout-ba, hogy colout-ba csempéshessem.

    Ez általában olyan könnyen használható, hogy gyakran találom magam új colout invocat ionok menet közben, és újból felhasználhatók vagy módosíthatók a parancssori előzményeimből.

    Ennek egyetlen hátránya, hogy Python csomagként érkezik, nem önálló futtatható fájlként, ezért telepítenie kell a pip, vagy a sudo python setup.py install használatával.

    Válasz

    A Solarized-t hasznosnak találom. Szép projekt, egységes színekkel, sok alkalmazáshoz.

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

    Válasz

    Használhatja a cf fájlnevek színezésére a parancssorban, ez egy gyors, kis awk alapú színező, amely csöveken keresztül működik – a fájlnevek színezése a Truecolor sRGB-ben.

    Élénk színű lesz az alapértelmezett konfiguráció, és az ls-sel ellentétben nem jár teljesítménybüntetéssel az új színek felvétele miatt. (Minden hibának le kell olvasnia a teljes LS_COLORS karakterláncot).

    https://github.com/AdamDanischewski/cf

    cf használat

    cf képernyőkép

    Válasz

    Mac esetén a következőket használhatja a megadott módon: itt

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

    Válasz

    színburkolót használok .

    A cw egy nem tolakodó, valós idejű ANSI színburkoló a GNU / linuxon található általános unix alapú parancsokhoz. A cw a végrehajtandó parancsok környezetének szimulálására szolgál, így ha egy személy a “du”, “df”, “ping” stb. szöveget írja be a shelljébe, akkor a definíció szerint automatikusan valós időben kiszínezi a kimenetet a kívánt színformátumot tartalmazó fájl. A cw támogatja a helyettesítő karakteres színezést, a tokenizált színezést, a fejléceket / lábléceket, az eset forgatókönyvének színezését, a parancssortól függő definíciós színezést, és több mint 50 előre elkészített definíciós fájlt tartalmaz.

    Szinte zökkenőmentes, de miután rájöttem, hogy az interaktív shell-ben lévő ps különböző kimenetet ad vissza, összehasonlítva a ps-t egy pipában.

    Válasz

    ha vim típust szeretnéd ugyanolyan színesíteni, mint én, azt javaslom, hogy kövess két lépést:

    1. megtanulhatod, hogyan kell bekapcsolni a funkciót ennek a linknek a követésével: kapcsolja be a színszintaktikus kiemelést a vi vagy a vimben .

    a hivatkozás legfontosabb lépései:

    1. Szerkessze a ~ / .vimrc fájlt a következő parancs beírásával: vi ~ /.vimrc

    2. A következő opció hozzáfűzése: szintaxis a következőn:

    3. Mentse és zárja be a fájlt

    4. Tesztelje a vim parancs futtatásával: vim foo.sh

    1. keressen meg egy tetszőleges színvilágot, és használja azt. Az általam használt séma: az általam használt séma

    Megjegyzések

    • Ha külső forrásra mutató linkeket használ, ellenőrizze a ” kontextust a linkek ” részhez (Fontos részek idézése) az útmutató vonatkozó részének áttekintése: unix.stackexchange.com/help/how-to-answer

    Válasz

    Ha a bash-t választja, akkor a következőt ajánlom: oh-my-bash . Ha a zsh-t választja, akkor a oh-my-zsh fájlt ajánlom. Mindkettő támogatja a terminál színezését és a különböző kimenetet.

    Válasz

    Szeretnék alázatosan hirdetni legutóbbi publikációmat ta vagy textattr könyvtárból és parancssori eszközből amelynek célja, hogy megkönnyítse a szín és az attribútumok hozzáadását a program termináljának kimenetéhez, azáltal, hogy az ember által olvasható specifikációkat ANSI menekülési kódokká fordítja.

    Például:

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

    vagy annál rövidebb:

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

    vagy egy alternatív:

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

    valami hasonlót ad:

    írja ide a kép leírását

    Jelenleg ez a könyvtár négy nyelven használható C, C ++, D és Python, eltekintve a parancssor használatától a kedvenc shelljében .

    Ne feledje, hogy ez nem színesíti automatikusan más programok kimenetét, inkább segédprogram, amely nem arra törekszik, hogy emlékezzen az elvont kódokra. Csak a nyilvánvaló színneveket vagy azok könnyen megjegyezhető rgb cmyk w (hite) (of) f rövidítések.

    További részletekért látogasson el a a textattr repo oldalra.

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük