Ist es möglich, links von jeder Ausgabe Leerzeichen an stdout (und stderr wenn möglich) hinzuzufügen, wenn ich Befehle in einem Bash-Shell-Skript ausführe?
Ich möchte etwas tun wie:
%Vor%Irgendeine Idee?
BEARBEITEN: Dem Befehl echo wurden Anführungszeichen hinzugefügt, andernfalls werden sie nicht aufgefüllt.
Ja, Sie können sie für einfache Dinge zitieren:
%Vor% und pipe die Ausgabe durch sed
für komplexe Dinge:
Das 2>&1
setzt stdout und stderr in den stdout-Stream und das sed
ersetzt jeden Zeilenanfangsmarker durch drei Leerzeichen.
Wie gut das bei etwas wie wget
funktioniert, das alle Arten von Cursormanipulationen durchführt, bin ich nicht sicher.
Beispiel hier gezeigt:
%Vor%Ein Trick, den ich in der Vergangenheit verwendet habe, ist sicherzustellen, dass die Skripte selbst für den Einzug sorgen:
%Vor% Dies führt das Skript mit dem Einzug durch sed
erneut aus, wenn es das nicht bereits tut. Auf diese Weise müssen Sie sich nicht darum kümmern, alle Ihre Ausgabeanweisungen zu ändern. Ein bisschen ein Hack, ich weiß, aber ich neige dazu, nur das zu tun, was für schnell und schmutzig Shell-Skripte notwendig ist.
Wenn Sie den Abstand ein- und ausschalten möchten, verwenden Sie das folgende awk-Skript:
%Vor% Beachten Sie, dass es bei Ihrem Bash-Skript leichte Probleme gibt. Beachten Sie, dass die Verwendung von =>
in Ihren echo-Anweisungen das Zeichen =
an die Datei "installing" ausgibt.
Die Kombination der beiden gibt mir:
%Vor%Wo Do-stuff ist Ihr Bash-Skript und Magic-Abstand ist mein awk-Skript oben.
Je nachdem, wie der Befehl in stdout schreibt, können Sie einfach mit einem einfachen awk-Skript einrücken:
%Vor%Tags und Links bash