Wie kann angesichts eines Befehls, der sein Verhalten ändert, wenn seine Ausgabe an ein Terminal geht (z. B. eine farbige Ausgabe erzeugen), diese Ausgabe in einer Pipeline umgeleitet werden, während das geänderte Verhalten beibehalten wird? Dafür muss es ein Dienstprogramm geben, das mir nicht bekannt ist.
Einige Befehle, wie grep --color=always
, haben Optionsflags, um das Verhalten zu erzwingen, aber die Frage ist, wie man Programme umgehen kann, die sich ausschließlich auf das Testen ihres Ausgabedateideskriptors verlassen.
Falls es darauf ankommt, meine Shell ist bash
unter Linux.
Akzeptierte Antwort:
Möglicherweise erhalten Sie, was Sie brauchen, indem Sie unbuffer
verwenden .
unbuffer
ist ein tcl
/ expect
Skript. Schauen Sie sich die Quelle an, wenn Sie möchten. Beachten Sie auch den Abschnitt VORBEHALTE in man.
Beachten Sie auch, dass Aliase wie:
nicht ausgeführt werdenalias ls='ls --color=auto'
es sei denn, man fügt einen Trick hinzu, wie von Stéphane Chazelas bemerkt:
Wenn Sie einen alias unbuffer='unbuffer '
verwenden (beachten Sie das abschließende Leerzeichen), dann werden Aliase nach unbuffer
erweitert .