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

Wie kann man einen Befehl dazu bringen, zu glauben, dass seine Ausgabe an ein Terminal geht?

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 werden
alias 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 .


Linux
  1. So weisen Sie einer Variablen die Ausgabe eines Linux-Befehls zu

  2. So erfassen Sie Terminalsitzungen und geben sie mit dem Linux-Skriptbefehl aus

  3. Wie weist man die Ausgabe eines Befehls einer Shell-Variablen zu?

  4. Terminal Strg+s versus Strg+z?

  5. Wie kann ich die Ausgabe eines Remote-Befehls in die lokale Zwischenablage kopieren?

So aktivieren Sie den Zeitstempel in der Ausgabe des Linux-Verlaufsbefehls

So booten Sie in die Linux-Befehlszeile

So zeichnen Sie alles auf, was Sie im Terminal tun

So leiten Sie die Shell-Befehlsausgabe um

So speichern Sie die Ausgabe des Befehls in einer Datei mit dem Linux-Terminal

Wie bekomme ich den Top-Befehl, um seine Ausgabe zu umschließen?