2017-10-05 10 views
-1

Je dois mettre en évidence certains mots-clés comme "échec, échec, erreur, fatal, manquant" sur mon terminal.Comment mettre en surbrillance certains mots sur le terminal toujours de toutes les commandes

J'ai besoin de cela avec la sortie de toutes les commandes, pas de commande spécifique. Je suppose que j'ai besoin de modifier mon fichier bashrc pour cela.

Pour colorer je peux utiliser:

<input coming to terminal>|grep -P --color=auto 'fail|failed|error|fatal|missing|$' 

J'ai essayé la commande suivante, mais pas aidé:

tail -f $(tty) |grep -P --color=auto 'fail|failed|error|fatal|missing|$' & 
[1]+ Stopped(SIGTTIN)  tail -f $(tty) | grep -P --color=auto 'fail|failed|error|fatal|missing|$' 

SO pour trouver des réponses recherché, mais n'a pas pu trouver une question qui fournit une réponse souhaitée.

Répondre

2

Je ne pense pas qu'il existe vraiment une façon élégante de faire cela en utilisant le shell. Idéalement, vous obtiendrez un émulateur de terminal avec ce type de mot-clé mettant en évidence intégré. Vous pouvez obtenir une partie du chemin en canalisant la sortie de bash à travers un filtre qui ajoute des échappements de couleur ANSI. Voici un script sed, qui remplace "échec" avec (rouge) fail (normal):

s/fail/\x1B[31m&\x1B[0m/ 
t done 

:done 

Run bash avec sa sortie canalisé par sed comme ceci:

$bash | sed -f color.sed 

Ce mécanisme est non sans problèmes, mais cela fonctionne dans certains cas. Habituellement, il est préférable de simplement collecter la sortie que vous voulez, puis la rediriger vers sed, plutôt que de travailler directement avec la sortie bash.

+0

Ceci est vraiment un travail pour l'émulateur de terminal. – chepner

+0

En effet. C'est pourquoi j'ai écrit "Idéalement, vous auriez un émulateur de terminal ..." :) –

+0

Yup, je voulais juste souligner que la vraie bonne réponse :) – chepner