GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wohin gehen die Ansi-Escape-Codes, wenn ich zu einem anderen Prozess leite? Kann ich sie behalten?

Ich möchte manchmal die farbcodierte Ausgabe für einen Prozess leiten, z. grep… aber wenn ich es an einen anderen Prozess weiterleite, z. sed gehen die Farbcodes verloren…

Gibt es eine Möglichkeit, diese Codes intakt zu halten?

Hier ist ein Beispiel, bei dem die farbige Ausgabe verloren geht:

echo barney | grep barney | sed -n 1,$\ p   

Akzeptierte Antwort:

Viele Programme, die farbige Ausgaben erzeugen, erkennen, ob sie auf ein TTY schreiben, und schalten Farben aus, wenn dies nicht der Fall ist. Dies liegt daran, dass Farbcodes stören, wenn Sie nur den Text erfassen möchten, sodass sie versuchen, automatisch „das Richtige zu tun“.

Der einfachste Weg, die Farbausgabe eines solchen Programms zu erfassen, besteht darin, es anzuweisen, Farbe zu schreiben, obwohl es nicht mit einem TTY verbunden ist. Sie müssen die Dokumentation des Programms lesen, um herauszufinden, ob es diese Option gibt. (z. B. grep hat den --color=always Option.)

Sie könnten auch expect verwenden script unbuffer um ein Pseudo-TTY wie dieses zu erstellen:

echo barney | unbuffer grep barney | sed -n 1,$\ p

Linux
  1. Wie kann ich die Ausgabe eines laufenden Prozesses in einer anderen Bash-Sitzung anzeigen?

  2. Was bedeutet in der Ausgabe von Ps?

  3. Warum kann ich die Ausgabe von Hintergrundprozessen sehen?

  4. Kann die Thread-ID eines Multithread-Prozesses mit der Prozess-ID eines anderen laufenden Prozesses identisch sein?

  5. Wie kann ich einen Prozess am Leben erhalten, nachdem ich die Putty-Sitzung geschlossen habe?

Wohin gehen Dateien, wenn der Rm-Befehl ausgegeben wird?

Wie kann ich die Ausgabe von curl -v weiterleiten oder umleiten?

Wie kann ich einen Benutzer in Linux löschen, wenn das System sagt, dass er derzeit in einem Prozess verwendet wird?

Finden Sie heraus, welcher Prozess sich am anderen Ende einer Pipe befindet

Was bedeutet das Linux-Pipe-Symbol | tun?

Was passiert, wenn eine Datei, die zu 100 % in den Seitencache eingelagert ist, von einem anderen Prozess geändert wird