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

Ausgabe des letzten Befehls automatisch mit Bash in eine Variable erfassen?

Dies ist eine wirklich hackige Lösung, aber sie scheint meistens manchmal zu funktionieren. Während des Testens bemerkte ich, dass es manchmal nicht sehr gut funktionierte, wenn ich ein ^C erhielt auf der Befehlszeile, obwohl ich es ein bisschen optimiert habe, um mich ein bisschen besser zu verhalten.

Dieser Hack ist nur ein interaktiver Modus-Hack, und ich bin mir ziemlich sicher, dass ich ihn niemandem empfehlen würde. Hintergrundbefehle verursachen wahrscheinlich noch weniger definiertes Verhalten als normal. Die anderen Antworten sind eine bessere Möglichkeit, programmgesteuert Ergebnisse zu erzielen.

Davon abgesehen, hier ist die "Lösung":

PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'

Legen Sie diese Bash-Umgebungsvariable fest und geben Sie die gewünschten Befehle aus. $LAST wird normalerweise die Ausgabe haben, nach der Sie suchen:

startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
                -- William Congreve

Ich kenne keine Variable, die das automatisch macht . Um etwas anderes zu tun, als nur das Ergebnis zu kopieren und einzufügen, können Sie alles, was Sie gerade getan haben, erneut ausführen, zB

vim $(!!)

Wobei !! ist eine History-Erweiterung, die 'der vorherige Befehl' bedeutet.

Wenn Sie erwarten, dass ein einzelner Dateiname Leerzeichen oder andere Zeichen enthält, die eine ordnungsgemäße Analyse der Argumente verhindern könnten, zitieren Sie das Ergebnis (vim "$(!!)" ). Wenn Sie es nicht in Anführungszeichen setzen, können mehrere Dateien gleichzeitig geöffnet werden, solange sie keine Leerzeichen oder andere Shell-Parsing-Token enthalten.


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

  2. Ausgabe des Befehls in Shell-Variable speichern?

  3. Verwenden einer Referenz auf eine Bash-String-Variable in Sed?

  4. Verwenden des Linux-Sleep-Befehls in Bash-Skripten

  5. Verwenden des Linux-Basisnamenbefehls in Bash-Skripten

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

Tutorial zur Verwendung des letzten Befehls im Linux-Terminal

Warum ist das Setzen einer Variablen vor einem Befehl in Bash legal?

Wie speichere ich ein übereinstimmendes Muster mit dem Befehl „sed“ in einer Variablen?

Verwenden des Linux-Dirname-Befehls in Bash-Skripten

Ausgabe des Zeitbefehls in Unix in eine Variable in Bash umleiten?