Gibt es einen Linux-Befehl, mit dem ich das Ergebnis eines anderen Befehls farbcodieren kann?

1173
STW

Ich führe watcheinen Befehl aus, um die Anzahl der offenen Verbindungen für einen Dienst zu überwachen, den wir diagnostizieren. Ich muss das während der anderen Arbeit im Auge behalten, damit andere Entwickler erkennen können, wann der Dienst funktioniert.

Das Ergebnis der Uhr ist eine Zahl zwischen 1 und 5000. Ich möchte die Zahl grün anzeigen, wenn sie unter 500 liegt, gelb, wenn sie zwischen 501 und 4000 liegt, und rot für über 4000.

Gibt es einen Befehl, mit dem die Farbe auf Grundlage des Werts meines Befehls leicht festgelegt werden kann?

5
Ich kenne mich mit linux nicht aus. "Watch" - bedeutet, dass im Terminal std angezeigt wird? Maximus vor 11 Jahren 0
@ Maximus Dies ist ein Linux-Dienstprogramm, das wiederholt einen Befehl ausführt und die Ausgabe in einem Terminal in einem bestimmten Intervall anzeigt. "watch -n 1 ps aux" - Zum Beispiel der Prozessmonitor eines armen Mannes (führen Sie "ps aux" aus, um die Prozesse alle 1 Sekunde aufzulisten und die Ergebnisse zu drucken). Darth Android vor 11 Jahren 1
Ich sage Ihnen nur: Es gibt colordiff für all diese unangenehmen diff-Befehle. Z.B. svn diff | colordiff -> woho! Valentin vor 11 Jahren 0

4 Antworten auf die Frage

3
Der Hochstapler

CCZE ist vielleicht das, was Sie suchen:
Manpage over in Ubuntu-Handbüchern

enter image description here

Installation

Auf Debian-basierten Systemen können Sie es einfach über installieren

sudo apt-get install ccze 

Verwendungszweck

Verwenden Sie es so:

tail -f /var/log/syslog | ccze 

Plugins

Wenn das Standardfarbverhalten cczenicht Ihren Vorstellungen entspricht, können Sie die Funktionalität durch Plugins erweitern. Leider habe ich noch nie geschrieben, da ich mit dem Standardverhalten gut bedient werde. Ich kann Sie also nur auf die ccze-pluginManpage verweisen .

3
fmanco

Ich habe dieses kleine Skript geschrieben, das ich color genannt habe:

#!/bin/bash  result=$($@)  GREEN="1;32m" YELLOW="1;33m" RED="1;31m"  if [ "$result" -lt "500" ] then echo -e "\033[$GREEN $result \033[0m" ; elif [ "$result" -ge "500" -a "$result" -le "4000" ] then echo -e "\033[$YELLOW $result \033[0m" ; else echo -e "\033[$RED $result \033[0m" ; fi 

Sie können jetzt ausführen:

watch --color ./color <your command here> 

Stellen Sie sicher, dass Ihr Befehl nur eine Zahl ausgibt. Ansonsten müssen Sie die Ausgabe korrekt behandeln und sie der resultVariablen zuweisen .

1
wizlog

Ich denke, Sie können die Manpages jedoch farblich hervorheben (nachdem Sie mehrere Google- Suchanfragen ausgeführt haben, glaube ich nicht, wonach Sie suchen.)

1
ott--

You could use tput to to put some color in your life. Examples are

tput setf 3 # textcolor green tput setf 6 # red tput sgr0 # back to normal echo "$(tput setf 6)$line$(tput setf sgr0)" 

This and more fun with tput on http://www.ibm.com/developerworks/aix/library/au-learningtput/