Globale Einfärbung des Terminals durch reguläre Ausdrücke

Globale Einfärbung des Terminals durch reguläre Ausdrücke

Ich weiß, dass viele Programme Farbe verwenden (vim, ack, color-ls, um nur einige zu nennen), aber es gibt immer noch viele Fälle, in denen man bei Schwarzweiß festsitzt.

Es gibt Skripte, die die Ausgabe auf der Grundlage regulärer Ausdrücke einfärben (z. B. „alles rot machen, was mit ‚Hund‘ übereinstimmt“), diese müssen jedoch mit Pipes aufgerufen werden – zum Beispiel: "> cat myfile | color dog red" und dies ist für alles Interaktive nutzlos.

Ich suche etwas, das den Terminalemulator einbindet (oder ein Terminal, das dies tatsächlich tut) und alles einfärbt, was einem bestimmten regulären Ausdruck entspricht, unabhängig von der Shell oder dem Programm, das ich gerade verwende. Wenn dies auch mit ncurses funktioniert, wäre das großartig. Ich habe zu viele monochrome Programme und es wäre toll, wenn ich eine Liste von Schlüsselwörtern angeben könnte, die hervorgehoben/eingefärbt werden sollen, wenn sie erscheinen oder eingegeben werden.

Ich verwende die Guake-Konsole, die wahrscheinlich das GNOME-Terminal verwendet. Ich weiß nicht, ob GNOME diese Funktion bereits hat.

Antwort1

Die Kurzfassung lautet:warum, ja, Sie können die Ausgabe aus der Shell weiterleiten, wie bei jedem anderen Programm.

Von dort aus können Sie verwenden, was immer Sie möchten, wie zum Beispiel

$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"

Ich dachte, ich füge meinen „Regenbogen“ hinzu. Viel Spaß:

for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \
  for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done

Antwort2

Ich suche immer noch nach einem Linux-Terminalemulator mit dieser Funktion, aber für diejenigen, die dies lesen und macOS X verwenden:

  • ErhalteniTerm2(Sie werden dies sowieso brauchen, wenn Sie viel mit der Befehlszeile unter OS X arbeiten), gehen Sie zu „Einstellungen > Profile > Erweitert“ und klicken Sie dann unter „Trigger“ auf „Bearbeiten“. Dort können Sie einen Trigger mit einem regulären Ausdruck wie hinzufügen ^.*\[ERROR\].*$und die Aktion auf „Text hervorheben“ und den Parameter auf etwas wie „Roter Vordergrund“ einstellen.

Antwort3

Es gibt wahrscheinlich bessere Lösungen als diese, aber möglicherweise können Sie mit expect etwas Einfaches ausarbeiten:http://expect.nist.gov/. Wenn Sie TCL lieber vermeiden möchten, stehen für viele andere Programmier-/Skriptsprachen Bibliotheken zur Verfügung.

Im Allgemeinen wird TCL zur Automatisierung interaktiver Programme verwendet, es ist jedoch möglich, diese auch interaktiv zu gestalten.

Ich würde Ihnen zum Einstieg etwas Code geben, aber ich habe ihn selbst schon eine ganze Weile nicht mehr verwendet.

Antwort4

Ich bin ziemlich sicher, dass die KDE-Konsole (zumindest die KDE3-Version) dies könnte, ich sehe jedoch keine Unterstützung in KDE4.

Dudürfenmachen Sie etwas mit grep wie folgt:

grep -C 99999 --color <whatever>

Dadurch sollten Übereinstimmungen hervorgehoben werden, es sollte jedoch so viel Kontext enthalten sein, dass die gesamte Datei einbezogen wird.

verwandte Informationen