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:
- 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. - 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.
- Egy csomó munkát elvégzek a GNU
screen
használatával, ami újabb szórakoztató réteget ad hozzá. - 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. -
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
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 .
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, aLSCOLORS=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 aps
alapértelmezés szerint. ‘ érdekelne anmap
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:
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 sed
része található).
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
- A (z)
ls
OS X rendszeren, de aexport CLICOLOR=1
használatával történik. - @ThomasW, de a linuxon nem :-p A srác mindkettőt használja.
- Mindazonáltal ThomasW helyesen állítja, hogy a válasz téves, ha azt állítja, hogy a színek nem érhetők el a
ls
esetén MacOS 10-en. A válasz abban az esetben is téves, hogy itt a gyors húrok valójában hibásak. Nem egyensúlyban vannak\[
és\]
és problémákat okozott legalább egy személy számára, aki lemásolta ezt a választ .
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
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, mintls -G
a BSD használatával (ls -g
régebbi BSD-ken). Ha als --color
működik (nincs hiba), akkor ‘ a GNU ‘ sls
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 futtassasource ~/.bashrc
, vagy indítson új bash munkamenetet (indítson terminált, vagy futtassonbash
).
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
- Vagy ha a ZSH-t szeretné használni, Phil Gold A ‘ s prompt a aperiodic.net/phil/prompt oldalon műalkotás.
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
É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!
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:
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:
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
akkor lucfenyőzhet a következővel:
python -m unittest discover -v 2>&1 | colout "(.*ERROR$)|(.*FAIL$)|(\(.*\))" red,yellow,black bold
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
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
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:
- 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:
Szerkessze a ~ / .vimrc fájlt a következő parancs beírásával: vi ~ /.vimrc
A következő opció hozzáfűzése: szintaxis a következőn:
Mentse és zárja be a fájlt
Tesztelje a vim parancs futtatásával: vim foo.sh
- 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:
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.
column -t --color
?