Värität terminaalia ja kuoriympäristöäsi

Vietän suurimman osan ajastani työskentelemällä Unix-ympäristöissä ja käyttämällä pääteemulaattoreita. Yritän käyttää väriä komentorivillä, koska väri tekee tulosteesta hyödyllisemmän ja intuitiivisemman.

Mitä vaihtoehtoja on värien lisäämiseksi pääteympäristöni? Mitä temppuja käytät? Mitä karhuja olet kohdannut?

Värituki vaihtelee valitettavasti päätelaitteen tyypin, käyttöjärjestelmän, TERM-asetuksen, apuohjelman, bugisten toteutusten jne. Mukaan.

Tässä on joitain vinkkejä asennuksestani , paljon kokeilemisen jälkeen:

  1. Minulla on tapana asettaa TERM=xterm-color, jota tuetaan useimmissa isännissä (mutta ei kaikissa).
  2. Työskentelen useilla eri koneilla, eri käyttöjärjestelmäversioilla jne. Käytän kaikkea macOS X: stä, Ubuntu Linuxista, RHEL / CentOS / Scientific Linuxista ja FreeBSD: stä. Yritän pitää asiat yksinkertaisina ja yleisinä, jos mahdollista.
  3. Teen joukon töitä käyttämällä GNU screen -tekniikkaa, mikä lisää uuden hauskuustason. / li>
  4. Monet käyttöjärjestelmät asettavat esimerkiksi dircolors ja oletusarvoisesti, enkä halua muuttaa tätä sadalla eri palvelimella. Joten yritän pitää kiinni oletusarvoista. Sen sijaan muokkaan päätelaitteen väriasetuksia.
  5. Käytä väriä joihinkin Unix-komennoihin (ls, grep, less, vim) ja Bash-kehote . Nämä komennot näyttävät käyttävän tavallisia ” ANSI-pakosarjoja ”. Esimerkiksi:

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

Lähetän .bashrc ja vastaan omaan kysymykseeni Jeopardy Style .

Kommentit

  • fyi minun lähestymistapani (katso vastaus alla) käsittelee OSX- ja Linux-eroja koskevia ongelmia, esimerkiksi yhden väri on ls -G ja toisaalta on ls –color-auto
  • Näikö kukaan työkalun sarakkeiden värittämiseen? Se on column -t --color?

Vastaus

Tässä on pari asiaa, joita voit tehdä:

Editors + Code
Monilla muokkaajilla on syntaksi tuen korostaminen. vim ja emacs on oletusarvoisesti käytössä. Voit myös ottaa sen käyttöön kohdassa nano .

Voit myös syntaksi korostuskoodin käyttämällä Pygments komentorivityökaluna.

grep
grep --color=auto korostaa kaikki ottelut. Voit myös käyttää export GREP_OPTIONS="--color=auto" -tunnistetta pysyväksi ilman aliasta. Jos käytät --color=always, se ”ll käyttää väriä myös putkiston aikana , mikä hämmentää asioita.

ls

ls --color=always

Värit, jotka määrittelee:

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

(vihje: dircolors voi olla hyödyllistä)

PS1
Voit asettaa PS1: n (kuorikehotteen) käyttämään värejä. Esimerkiksi:

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

Tuottaa PS1: n, kuten:

[keltainen] lucas @ ubuntu: [punainen] ~ [normaali] $

Tämän avulla voit olla todella luova. Ideaksi:

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

Laittaa päätelaitteen yläreunaan palkin, jossa on satunnaisia tietoja. (Parhaan tuloksen saamiseksi käytä myös alias clear="echo -e "\e[2J\n\n"".)

Pakosarjojen poistaminen

Jos jokin on juuttunut tulostamaan väriä, kun et halua sitä, käytän tätä sed rivi pakosarjojen poistamiseksi:

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

Jos haluat aitemman kokemuksen, voit myös päästä eroon riveistä, jotka alkavat \e[8m, joka kehottaa päätelaitetta piilottamaan tekstin. (Ei laajasti tuettu.)

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

Huomaa myös, että näiden ^ [: iden tulee olla todellisia, kirjaimellisia ^ [s. Voit kirjoittaa ne painamalla bashissa ^ V ^ [eli Ctrl + V , Ctrl + [ .

Kommentit

  • Ensimmäisen PS1-rivin tulee olla seuraava: PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '. Neljännen taaksepäin viivan jälkeen on tarpeeton x.
  • Poistumiset tulisi sulkea \[...\] -kohtaan tai muuten toisen rivin komennot korvaavat ensimmäisen rivin. PS1 = ’ [ \ e [33; 1m ] \ u @ \ h: [ \ e [31m ] \ W \ e [0m \ $ ’
  • ls --color=always ei toimi ’.@Michael Durrant ’ -lähestymistapa on parempi tähän: ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'

vastaus

Käytän myös:

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

Ja jos haluat värittää kehotettasi, määritetyt värimuutokset voivat ole hyödyllinen:

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" 

Ja sitten kehotukseni on jotain tällaista:

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) kutsuu ~ / sbin -laitteessani python-komentosarjaa, joka tulostaa versionhallintatiedot nykyisestä polusta. Se sisältää tuen Mercurialille, Gitille, Svn: lle, Cv: lle jne. Skriptin kirjoittajalla on -lähde täällä .

Bash-kehotteen kuvakaappaus

Tämä on täydellinen lähde pikakokoonpanostani:

kommentit

  • Katso ratkaisu linjaongelmaan, jonka sain käyttäessäsi yllä PS1: stackoverflow.com/questions/5087036/…
  • I ’ ve päivitti vastauksen vastaamaan kehotteessa olevien värien pakollisia sulkeita. Kiitos!
  • $LSCOLORS ja $CLICOLOR on tarkoitettu BSD ls: lle. GNU ls (Linux) käyttää $LS_COLORS: ää eri syntaksilla. Koska GNU tuntuu kotoisalta minulta, jäljittelen LSCOLORS=exgxfxDacxBaBaCaCaeaEa GNU: n ’ värejä BSD: ssä.
  • grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
  • Sinun on ehkä hankittava .bashrc -tiedosto, jotta muutos olisi tehokas. Voit tehdä sen seuraavalla komennolla. source /path/to/.bashrc

Vastaa

grep ja ls on jo mainittu, jos haluat paljon enemmän värejä, tarkista Yleinen väriaine , sen alkuperäinen tarkoitus oli värittää lokitiedostot, mutta heti pakkauksesta se värittää myös ping, traceroute, gcc, make, netstat, diff, last, ldap ja cvs.

Se laajenee helposti, jos tiedän regeksit. Olen lisännyt ps ja nmap luetteloon (jos pääset grc Olen iloinen voidessani jakaa näiden kahden työkalun .conf-tiedostot)

(Btw, asentaaksesi sen synaptic, pacman, ja samankaltaisilla voi olla parempi etsintä ”grc”)

Kommentit

  • grc tukee nyt ps oletuksena. Olen ’ kiinnostunut nmap -väreistäsi. Katso myös vastauksestani, että kaikki nämä aliasin siten, että ne absorboivat uusia komentoja päivittäessäsi grc: tä.
  • Huomasin sen. täällä ’ s conf.nmap (ja kaikki muu, todella) gist.github.com/sygo/844982#file-conf -nmap – Huomasin, että työskentelet infosekissä, saatat löytää conf.hexdumpin mielenkiintoisesta, en ole vielä ’ vielä valmis.
  • Kiitos @Sygo. Olen ’ olen haarautunut ja tarkistanut pääsisältöäsi. En ’ ole koskaan tosiasiallisesti sitoutanut tietoja gitin kanssa (puhumattakaan github ’ s-listoista), enkä osaa ehdottaa niiden yhdistämistä takaisin sinulle (minä ’ arvaan tämän johtuvan siitä, että pääsisältö on liian yksinkertaistettu).
  • Epäilen, että voit ’ t koska se ’ on ydin eikä oikea arkisto. Tarkastin kuitenkin haarukan ja ’ annoin ehdottomasti versioni mennä. Olen ’ m utelias, mistä siitä hex-dumpista tulee …

Vastaa

Olen hionut .bashrc-tietoni vuosien varrella toimimaan sekä OSX: ssä että Ubuntussa.
Olen myös pienentänyt sen kokoa 28 riviin pienikokoisilla ehtoilmoituksilla.
Sen avulla , PS1-kehotteeni näyttää tältä: kirjoita kuvan kuvaus tähän

aika punaisella, käyttäjänimi vihreällä, koneen nimi vaaleansinisellä, pwd tummemmalla sinisellä ja git-haara keltaisena.

PS1-kehotteen ominaisuus:

  • näyttää git-haaran!
  • pitkät hakemistopolut (yli 6 elementtiä) ovat ” leikattu ”näyttämään ylin 3 ja alin 3 hakemistoa, joiden välillä on _ (se on pwd sed osa SIJAINTIA).
  • rivinvaihto lopussa niin, että kehote on aina vasemmalla!

.bashrc -tiedostoni asiaankuuluvat rivit ovat:

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

Värillisille kuville, jos saatavilla d ei virheitä, kun ei (ts.OSX):

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

kommentit

vastaus

-sivun värit ( lisätietoja ):

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

Värit kohteelle grep (1;32 on kirkkaan vihreä, katso muut värit täältä):

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" 

Lisää värejä 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 

Asenna grc ( Yleinen väriaine ) ja lisää se aliaksihisi:

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

Värit mallille diff : Liian paljon sisältöä toiminnolle, käytä komentosarjaa ja peitä se RC-tiedostossa (tarpeeton, jos asennit 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; 

Värit mallille bash-kehote :

# 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-kehotteen esittely

kommentit

  • Myönnä kuvakaappauksen ääni
  • PSWD() -toimintoni oli aiemmin POSIX-yhteensopiva, mutta sitä ’ helpotettiin huomattavasti käyttämällä bash / zsh-osajohtojen käsittelyä. Katso tarkistus 6 POSIX-versiosta, joka sisältää paljon kysymysmerkkejä ja jota ei lainkaan ’ t ollut mukautettavissa päätelaitteeseen leveys. En päivittänyt kuvakaappausta ’, mutta se ’ on vain pieni muutos 80 merkin leveydellä.
  • CLICOLOR=1 ei toimi ’ ei toimi minulle FREEBSD 11.2: n kanssa
  • @SimonC. – Saatat käyttää GNU-apuohjelmia FreeBSD -järjestelmässäsi BSD: n sijaan. CLICOLOR=1 ls pitäisi tehdä sama asia kuin ls -G käyttämällä BSD: tä (ls -g vanhemmilla BSD-levyillä). Jos ls --color toimii (ei virheitä), ’ käytät GNU ’ s ls -komento ja $CLICOLOR ohitetaan.
  • @SimonC. – Sinun on ladattava ~/.bashrc, jotta muutokset astuvat voimaan. Joko ajaa source ~/.bashrc tai aloita uusi bash-istunto (käynnistä pääte tai suorita bash).

Vastaa

Aseta lihavoitu / värillinen kehote. Alkaen cyberciti.biz ja 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 \$ " 

Olen myös löytänyt väriasetukset, joita tuetaan laajalti ja jotka eivät tulosta gobbledygook-merkkejä vanhemmissa ympäristöissä (jopa FreeBSD4!), ja näyttää toimivan hyvin, jos TERM = vt100, xterm , xterm-väri. (Suurimmaksi osaksi). Omasta .bashrc-tiedostostani:

# 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 

kommentit

Vastaa

Asioita, joita ei ole vielä sanottu täällä:

Kokoelmien tulosten värittäminen gcc: llä , siellä on colorgcc, kirjoittanut Johannes Schlüter.

Lokien värittämiseksi on moniosainen.

Jos haluat värittää minkä tahansa stdoutin, kootin xcol

xcol-esimerkki

Käytän henkilökohtaisesti nämä xcol-työkalusta.

#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 

Käytän näitä muuttujia skripteissäni niin

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

Pidän myös tästä pienestä toiminnosta coloredEcho (löytyy pinon ylivuodosta)

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 

Valitettavasti en saa lähettää lisää linkkejä

Kommentit

  • Hei, miten teet liput kehotteen polulle? Mainitsen suorakaiteen muotoiset palkit, joissa on kolmionpäät Kiitos
  • toimiiko se myös ubuntu gnu -terminaalissa?
  • lnav on myös erinomainen työkalu värillisten lokitiedostojen näyttämiseen

vastaus

Siellä on hyvä työkalu värien asettamiseen komennolle ls – http://geoff.greer.fm/lscolors/

Vastaa

Ehdotan, että tutustut ZSH ja sen laajennus oh-my-zsh , jolla on yksi tehokkaimmista konsoliominaisuuksista, jotka näin. Yksi heistä valitsee teeman Tämä on esimerkki teemastani … Tty: ssä värit eivät ole niin lämpimiä, mutta ne ovat samat kuin tässä kuvassa … Joka tapauksessa rakastat sitä!

kirjoita kuvan kuvaus tähän

kommentit

  • Jos voisin, äänestäisin tätä Oh-My-ZSH: lle Ehdotus: Järjestelmäsuunnittelijana, joka työskentelee laajasti terminaalissa, ja joku, joka yritti ottaa zsh / oh-my-zsh-työnkuluni käyttöön, Voin rehellisesti sanoa, etten koskaan suosittele ZSH: ta kenellekään. Toki, voit liittää zsh: n tiedostoon, joka on nimetty minkä tahansa muun kuoren mukaan, ja jäljitellä sitä, mutta kun teet sen, se ei ’ lue .bashrc, .bash_profile jne. , et voi laittaa emulate bash .zprofile- tai .zshrc-tiedostoihisi. Kaikille, jotka työskentelevät BASH: n edistyneiden ominaisuuksien kanssa, on monia hienovaraisuuksia, jotka purevat sinua. BASH on parempi sh.
  • Ainoa asia, joka ZSH: llä on laatikosta ja joka on parempi kuin BASH, on komennon täydennys, mutta jopa se on ohjelmoitavissa BASH: ssa. Ehkä jonkun, joka ’ ei käytä komentotulkkia, lukuun ottamatta satunnaisia arkipäiväisiä tehtäviä, tulisi omaksua ZSH, mutta se ’ ei ole kenellekään, joka tarvitsee käytä kuorta laajasti. =~ -operaattori voi purra sinua, tapa, jolla ZSH käsittelee taulukoita, voi purra sinua jne. Kun olen käyttänyt ZSH / Oh-My-ZSH: tä noin 9 kuukauden ajan, minulla oli siitä tarpeeksi. Käytin mukautettua teemaa, jonka kirjoitin itse, siirrin sen BASH: lle ja kirjoitin oman git-kehotteen, enkä ’ ole koskaan katsonut taaksepäin. Nyt en enää välitä siirrettävyydestä.
  • ” sillä on yksi tehokkaimmista konsolin ominaisuuksista, jotka näin. Yksi heistä valitsee pääteesi teeman. ”
  • @JonathanHartley, kommenttisi näyttää jättäneesi puutteellisen. ?
  • Kiitos huolestutuksestasi, mutta kommenttini kertoo kaiken, mitä halusin sanoa.

Vastaa

Jos haluat tarkastella diff-tulosteita värillisinä, käytä colordiff .

sudo apt-get install colordiff 

Pipe mikä tahansa diff-muotoinen lähtö colordiffiin:

colordiffiin johdettu diff-tulos

Tämä sisältää joitain diff: n vaihtoehtoisia muotoja, kuten -y (vierekkäin.)

Vaihtoehtoisesti, jos sitä kutsutaan itsenäiseksi ( ilman mitään putkistoa siihen), se toimii kääreenä ”diff” -kohdan ympärillä ja värittää tuloksen. Siksi minulla on tämä .bashrc: ssä, alias ”diff”: n kanssa colordiffiin.

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

Kommentit

  • .bashrc -esimerkistä puuttuu lopullinen fi, ja se voidaan muuntaa yksiriviseksi komennoksi: type colordiff &> /dev/null && alias diff='colordiff'

Vastaa

Joitakin tekstikoristeluja (lihavoitu), jotta juuri ja ei-root-kuori voidaan helposti erottaa toisistaan. Zsh:

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

Bash:

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

kommentit

  • Määritä kuori. Kysymyksen ’ ainoa kuorikohtainen tunniste on bash , mutta mielestäni koodi ei ole bash.
  • @manatwork: anteeksi, unohdin mainita, että se oli Zsh. Päivitin viestini.

Vastaa

Mietin vain samaa. Minulla on oma lähestymistapani, mutta etsin vaihtoehtoja.

Kirjoitan bash-kääreitä ohjelmakutsujen ympärille ja välitän niiden lähdön sed. Mistä pidän sed on se, että se muokkaa ja toistaa kutakin riviä heti => ei paljon puskurointia. En kuitenkaan pidä siitä, että jokaisessa puhelussa käärittyyn ohjelmaan sed -koodi jäsennetään ja käännetään.

Esimerkiksi minä teen tämän värittäen 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" 

vastaus

Kehotteen asettamiseksi minulla on tämä .bashrc-tiedostossa.

#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 

Tämä antaa minulle kehotteen, joka näyttää tältä:

user@host(bash): ~/bin > 

Työhakemisto on vihreää Ja käyttäjänimi on lihavoitu ja syaani, ellet ole suorittanut komentotulkkia sudo – koodilla, jolloin käyttäjänimi (”root”) näkyy lihavoituna ja punaisena.

Pidän henkilökohtaisesti todella siitä, että muotoilun ohjausmerkit tallennetaan muuttujiin, koska se helpottaa koodin lukemista kehotteen asettamiseksi. Se myös tekee kehotteen muokkaamisesta paljon helpompaa.

Syynä siihen, että käytän tput, on se, että sitä tuetaan yleisemmin. kuin outoja 033[01;31m\] -sekvenssejä. Jos lisäät bonuksena, jos teet kehotteessa echo $PS1, näet raakakehotteen värit näiden selittämättömien ohjausjaksojen sijaan.

Vastaa

Voit kokeilla projektia, joka auttaa myös komentosarjojen tulostuksen värittämisessä, sen nimeltään ScriptEchoColor lähdepalvelussa: http://scriptechocolor.sourceforge.net/

esimerkki:

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 

Automaattiset värit ovat määritettävissä.

Tämä on esimerkki siitä tehty: kirjoita kuvan kuvaus tähän

Vastaa

Erinomainen yleiskäyttöinen Python -työkalu komentojen tulostuksen värittämiseksi on ” colout

Annat sille regexin, jossa on N ryhmää, jota seuraa pilkulla erotettu N värin luettelo. Ryhmää vastaava teksti näytetään vastaavalla värillä.

Joten jos esimerkiksi tarkastelet jotain testilähtöä:

python -m unittest discover -v 

Joidenkin Python-unestestien värittömiä ulostuloja

sitten voit kuusata ne ylöspäin:

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

Joidenkin Python-yksiköiden värillinen ulostulo

Katso, miten regexissäni on kolme ryhmää (sulkeet) ja sen jälkeen kolme väriä (ja valinnaisesti kolme tyyliä), mutta olen käyttänyt lyhennettä asettaaksesi kaikki värit lihavoituiksi , joten suluissa olevaa tekstiä vastaava ”musta” ryhmä tulee tummanharmaana.)

Huomaa myös, kuinka minun piti lisätä 2>&1 loppuun Python-kutsusta, koska unittest-tulos on stderr-tiedostossa, joten siirsin sen stdout-tiedostoon, jotta voisin laittaa sen coloutiin.

Tätä on yleensä niin helppoa käyttää, että huomaan itseni usein luomassa uutta colout invocat ioneja lennossa ja niiden uudelleenkäyttö tai muokkaaminen komentorivihistoriastani.

Ainoa haittapuoli on se, että se tulee Python-pakettina, ei erillisenä suoritettavana, joten sinun on asennettava se pipillä tai sudo python setup.py install.

Vastaa

Minusta Solarized on hyödyllinen. Se on siisti projekti, jossa on yhtenäiset värit useille sovelluksille.

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

Vastaa

Voit käyttää minun cf-tiedostoa tiedostonimien värjäämiseen komentorivillä, se on nopea pieni awk-pohjainen väriaine, joka toimii putkien kautta – värjää tiedostonimet Truecolor sRGB: ssä.

Se sai kirkkaan värisen oletuskokoonpano ja toisin kuin ls, se ei kärsi suoritusrangaistuksesta uusien värien lisäämisestä. (L: n on skannattava koko LS_COLORS-merkkijono kutakin ohitusta kohden).

https://github.com/AdamDanischewski/cf

cf-käyttö

cf-kuvakaappaus

Vastaa

Macissa voit käyttää seuraavaa määritetyllä tavalla täällä

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

Vastaa

Käytän värikääriä .

cw on ei-häiritsevä reaaliaikainen ANSI-värikääre tavallisille unix-pohjaisille komennoille GNU / linuxissa. cw on suunniteltu simuloimaan suoritettavien komentojen ympäristöä, joten jos henkilö kirjoittaa kuoreensa ”du”, ”df”, ”ping” jne., se värittää tuloksen automaattisesti reaaliajassa määritelmän mukaisesti tiedosto, joka sisältää halutun värimuodon. cw tukee jokerimerkkivärit, merkityt värit, otsikot / alatunnisteet, tapausskenaarion värityksen, komentorivistä riippuvat määritysvärit ja sisältää yli 50 valmiiksi määritettyä tiedostoa.

Se on melkein saumaton, mutta kerran huomasin, että interaktiivisessa kuoressa oleva ps palauttaa erilaisen tuotoksen verrattaessa putken ps: tä.

Vastaa

jos haluat tehdä vim värikkäästä aivan kuten minä, suosittelen sinua noudattamaan kahta vaihetta:

  1. opi käynnistämään ominaisuus seuraamalla tätä linkkiä: ota värisyntaksin korostus käyttöön vi tai vimissä .

linkin avaimen vaiheet:

  1. Muokkaa ~ / .vimrc-tiedostoa kirjoittamalla komento: vi ~ /.vimrc

  2. Liitä seuraava vaihtoehto: syntaksi

  3. Tallenna ja sulje tiedosto

  4. Testaa se suorittamalla vim-komento: vim foo.sh

  1. etsi haluamasi värimaailma ja käytä sitä. Käyttämäni malli: käyttämäni malli

Kommentit

Vastaa

Jos bash on valinta, suosittelen oh-my-bash . Jos valitset zsh, suosittelen oh-my-zsh . Molemmat tukevat päätelaitteen väriä ja erilaista lähtöä.

Vastaa

Haluan mainostaa nöyrästi äskettäistä julkaisua / ta tai textattr , kirjasto ja komentorivityökalu jonka tarkoituksena on tehdä värien ja määritteiden lisääminen kaunistaaksesi ohjelman pääteulostuksen kääntämällä ihmisluettavat tiedot ANSI-pakokoodeiksi. e940407c68 ”>

tai jopa lyhyempi:

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

tai vaihtoehtoinen vaihtoehto:

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

antaa sinulle jotain:

kirjoita kuvakuvaus tähän

Tällä hetkellä tätä kirjastoa voi käyttää neljällä kielellä C, C ++, D ja Python lukuun ottamatta komentorivin käyttöä suosikkikuorestasi .

Huomaa, että se ei väritä automaattisesti muiden ohjelmien tulosta. Se on pikemminkin apuohjelma, joka auttaa sinua yrittää muistaa epäselvät koodit. Sinun tarvitsee käyttää vain ilmeisiä värinimiä tai niiden helposti muistettavia rgb cmyk w (hite) (of) f lyhenteet.

Lisätietoja on textattr-repossa .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *