GNU/Linux >> Linux Esercitazione >  >> Linux

Colore diverso per comando e output

Puoi passare l'output a un programma che esegue la colorazione. Ad esempio, ci sono programmi come pycolor :

pycolor module.py

Per creare il tuo:

red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"

Maggiori informazioni sull'output a colori.


Non proprio; il colore dell'output di un dato programma è controllato dal comando, non dal terminale.

Detto questo, supponendo che il tuo terminale comprenda i codici di escape ANSI per il colore (la maggior parte lo fa), potresti usare i codici di escape per impostare il colore del prompt desiderato all'inizio del prompt e il colore di output desiderato alla fine; ciò comporterebbe che anche le tue righe di comando siano in qualsiasi colore tu abbia impostato per l'output, ma probabilmente è il più vicino possibile a quello che stai cercando. Ad esempio, quanto segue:

$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '

ti darà un prompt simile a:

[email protected]:wd $ _

con "user" e "host" in viola, "wd" (il tuo cwd) in marrone (giallo scuro) e tutto ciò che segue "$" in qualunque cosa il tuo terminale utilizzi per l'azzurro. (Un xterm predefinito lo renderà in ciano; gnome-terminal sembra impostare per impostazione predefinita una tonalità piuttosto gradevole di blu fiordaliso.)

Il codice colore effettivo, come specificato nel formato necessario per bash, è, ad esempio, \[\033[00;35m\] , dove 00;35 è la specifica del colore effettivo; il 00 iniziale cambia raramente, ma può produrre effetti IIRC grassetto (01), sottolineato (??) e video inverso (??), mentre il "35" finale è il colore effettivo, che in questo caso è viola.

È sorprendentemente difficile trovare un elenco decente di codici colore ANSI, ma i colori in primo piano vanno da 30 a 37 e quelli di sfondo da 40 a 47, come segue:

color        fg  bg
black        30  40
red          31  41
green        32  42
yellow       33  43
blue         34  44
purple       35  45
cyan         36  46
gray/white   37  47

Tieni presente che, poiché stai impostando un colore predefinito per tutto ciò che segue il tuo prompt, i programmi che esegui che non impostano i propri colori tramite codici di escape prenderanno quel colore, ad esempio se esegui un pager, probabilmente vedrai il suo output nello stesso colore che hai impostato per altri comandi. Nel frattempo, i comandi che fanno impostare i propri colori tramite codici di escape ignorerà completamente i tuoi sforzi.


Sì, ce l'ho con bash, almeno su Linux e Mac OS.

Innanzitutto, imposta alcune variabili di attributo e PS1 richiede di lasciare il terminale impostato con gli attributi della riga di comando desiderati, ad esempio:

bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"

Quindi, usa il trap bash DEBUG, che viene eseguito appena prima di ogni comando, per modificare gli attributi di testo per l'output del comando:

trap 'echo -ne "${none}"' DEBUG

Linux
  1. L'output del comando reindirizza al file e al terminale

  2. finestra mobile:PID diverso per `top` e `ps`

  3. Perché il comando free e dmidecode mostrano valori diversi per la RAM?

  4. shell diversa per utente root e non root

  5. Output di colore incoerente dal comando `ls`

Come modificare il colore di output di "Echo" in Linux

Come leggere l'output e gli usi dei comandi principali di Linux

50 Comando grep produttivo e pratico per gli appassionati di Linux

Comando Linux Head Tutorial ed esempi per principianti

Spiegazione:input, output e reindirizzamento degli errori in Linux

Come colorare l'output del differenziale per una migliore visualizzazione