Wie kann ich die Ausgabe des zuletzt ausgeführten Befehls vom Terminal speichern?

Wie kann ich die Ausgabe des zuletzt ausgeführten Befehls vom Terminal speichern?

Ich habe einen inkrementellen Build-Befehl für mein Projekt, der etwas ausgibt, wenn ich einen sauberen Build durchführe, und etwas anderes (weniger) ausgibt, wenn ich einen inkrementellen Build durchführe.

Wie kann ich dies speichern, wenn ich bereits einen sauberen Build ausführe mycommand.shund die Ausgabe im Terminalfenster gedruckt wird (ohne Kopieren und Einfügen zu verwenden)?

Ich habe vergessen zu tun

mycommand.sh > myfile.txt

oder

mycommand.sh >> myfile.txt

zum Speichern der Ausgabe in einer Datei.

Antwort1

Während $(!!)das erneute Ausführen des vorherigen Befehls eine Lösung zu sein scheint (oder manchmal auch ist), hat es auch seine Nachteile, die Sie berücksichtigen müssenvölligverstehen, es zu benutzen.

Beispiel: Wenn der Befehl einige Änderungen vorgenommen hat wie

rm -rv /tmp/*

tun wird, dann kann das erneute Ausführen dieses Befehls in irgendeiner Weisenichterzeugen dieselbe Ausgabe wie zuvor, mit der Ausnahme, dass die Ausgabe dieselbe sein sollte, wenn /tmp/ vor dem ersten Durchlauf leer war und beim zweiten Mal immer noch leer ist.

Fazit: Es gibt keinesicherMöglichkeit, die Ausgabe des letzten Befehls wiederzuverwenden oder zu speichern (ohne Kopieren und Einfügen), wenn Sie sie während der Ausführung des Befehls nicht gespeichert haben.

Antwort2

Das ist nicht möglich, da Bash keinem Parameter oder Block in seinem Speicher eine Ausgabe zuweist.

Sie können jedoch verwenden, $(!!)umneu berechnen(nicht wiederverwenden) die Ausgabe des letzten Befehls.

Der !!letzte Befehl wird von alleine ausgeführt.

$ echo pierre
pierre
$ echo my name is $(!!)
echo my name is $(echo pierre)
my name is pierre

Quelle:Wiederverwenden der Ausgabe des letzten Befehls in Bash

verwandte Informationen