GNU/Linux >> Linux Esercitazione >  >> Linux

Output di evidenziazione del colore basato sulla regex nella shell

C'è una risposta in superuser.com:

your-command | grep -E --color 'pattern|$'

o

your-command | grep --color 'pattern\|$'

Questo "corrisponderà al tuo schema o alla fine della riga su ogni riga. Viene evidenziato solo lo schema..."


Potresti provare (forse ha bisogno di un po' più di sfuggita):

BLUE="$(tput setaf 4)"
BLACK="$(tput sgr0)"
command | sed "s/^ERROR /${BLUE}ERROR ${BLACK}/g"

Se vuoi abilitarlo a livello globale, vorrai una funzionalità di terminale, non un processo in cui convogli l'output, perché un pipe danneggerebbe alcuni comandi (due problemi sono che stdout e stderr apparirebbero fuori servizio e bufferizzato e che alcuni comandi si comportano in modo diverso quando vengono inviati a un terminale).

Non conosco nessun terminale “convenzionale” con questa caratteristica. È facile farlo in Emacs, in un term buffer:configura font-lock-keywords per term-mode .

Tuttavia, dovresti pensare attentamente se vuoi davvero quella funzione tutto il tempo. Cosa succede se il comando ha i propri colori (ad es. grep --color , ls --color )? Forse sarebbe meglio definire un breve alias per un comando colorizer ed eseguire myCommand 2>&1|c quando vuoi colorare myCommand l'uscita di. Potresti anche creare degli alias per alcuni comandi specifici colora sempre.

Tieni presente che lo stato di ritorno di una pipeline è last comando, quindi se esegui myCommand | c , otterrai lo stato di c , non myCommand . Ecco un wrapper bash che evita questo problema, che puoi usare come w myCommand :

w () {
  "[email protected]" | c
  return $PIPESTATUS[0]
}

Puoi usare programmi come:

  • spc (Supercat)
  • grc (coloratore generico)
  • evidenziare
  • histring
  • pigmentizza
  • grep --colore

Puoi fare qualcosa del genere, ma i comandi non vedranno un tty (alcuni si rifiuteranno di eseguire o si comporteranno in modo diverso o faranno cose strane):

exec > >(histring -fEi error)    # Bash

Linux
  1. 2>&1 e la comprensione di altri modi di dire di script di shell

  2. Qual è la differenza nell'ottenere l'output del comando usando `command`e $(command) in Shell??

  3. Come sapere se l'output di un comando o di uno script di shell è Stdout o Stderr?

  4. Come convertire l'output della shell di Linux in HTML?

  5. Output a colori del programma eseguito in BASH

Come eseguire i comandi della shell tramite il server HTTP

Come reindirizzare l'output del comando della shell

Shell Scripting Part4 – Input, Output e Reindirizzamento

Libreria di output di script di shell colorata

Reindirizzamento dell'output del comando nella finestra mobile

Cambia l'editor crontab predefinito in nano in FreeBSD