Ausgabe des letzten Shell-Befehls
Nicht bis auf halbem Wege durch ein 3-Stunden-build-Skript, werde ich mich erinnern, dass ich möchte, um etwas zu sehen, am Anfang der Ausgabe, nachdem es fertig ist. An diesem Punkt habe ich überschritten, die Anzahl der Zeilen in mein terminal so kann ich nicht nach oben scrollen um es zu sehen (oder der Anfang ist schwer zu finden). Natürlich kann ich besser über die Speicherung meiner Ausgabe, aber ich war schon immer neugierig, ob dies möglich waren.
In einer linux-shell, ist es möglich, zurück die Ausgabe des letzten Befehls. Ich merke, ich könnte geleitet wurden oder verschickt die Ausgabe an eine Datei, aber meine Forderung ist, die zum abrufen der Ausgabe nach der Befehl ausgeführt wurde.
Mithilfe der csh, aber würde hören über die shell.
InformationsquelleAutor der Frage ack | 2010-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Die Ausgabe eines Programms geht niemals durch die Schale in die Hände. Ohne Umleitung geht es direkt zu den TTY. Mit der Umleitung geht es gerade um was auch immer Datei oder pipe gerichtet war. Die Schale hat keine Ahnung, was der Prozess gesendet auf stdout/stderr.
InformationsquelleAutor der Antwort Nicholas Knight
script(1)
ist genau das, was Sie brauchen:Den
script
Programm wird eine neue shell starten, und speichern Sie die Eingabe und Ausgabe an dietypescript
- Datei. Wenn Sie fertig sind, schließen Sie einfach die Schale mitexit
oder^D
. Wenn Sie lieber nicht eine neue shell starten, aber führen Sie einfach Ihren build, den Sie verwenden können:script -c <command>
.InformationsquelleAutor der Antwort sarnold
Wenn Sie den Befehl ausführen wieder würde nichts ändern, die Sie verwenden können !! auf der obersten der Geschichte stack erneut ausführen den letzten Befehl. So in backticks können Sie verwenden das Ergebnis.
InformationsquelleAutor der Antwort David Woods
Das könnte sehr unordentlich mit bestimmten Befehlen, verwenden Sie cursor-Adressierung. Was ist der Ausgang des vim-Sitzung? Oder einen etwas vernünftigeren Beispiel: Sie sind das herunterladen einer Datei mit wget, und es zeigt eine Fortschrittsanzeige von 0% bis 100%. Was ist das Ergebnis?
Ich denke, Sie wollen im Grunde eine hardcopy alles zwischen Ihrem aktuellen Zeile und der vorherigen Eingabeaufforderung. Das ist nicht etwas, shell-Umleitung wäre ein gutes Beispiel für, das ist im Grunde etwas, das ein terminal machen würde. Sie es tun könnten manuell durch kopieren und einfügen in die Leinwand, und vielleicht könnte man automatisieren, mit seinen exec Befehl. tmux vielleicht etwas ähnlich, und Sie können tun seltsame Dinge mit den shell-Modus(s) von Emacs, aber das ist eine eher schwergewichtige Lösung. rxvt-unicode ist eine perl-Erweiterung...
InformationsquelleAutor der Antwort mhd
Wie über die Verwendung von substitution. Wie diese:
InformationsquelleAutor der Antwort NawaMan
Sehen Sie die return-code des letzten Befehls, zumindest in der bash, mit
$?
.So weit stdout geht, ich glaube nicht, dass Sie können.
InformationsquelleAutor der Antwort J. Polfer
Wenn Sie auf der Suche rein für den return-code des zuletzt ausgeführten Befehls, verwenden Sie
echo $?
.Dieser hilft in der Regel, wenn Sie möchten, um herauszufinden, ob Ihre Letzte Befehl erfolgreich ausgeführt, und Sie könnte auch Schimmel diese in Ihrem build-Skript für die pass/fail-Warnungen.
InformationsquelleAutor der Antwort jnmistry
speichern Sie die Ausgabe als variable?
InformationsquelleAutor der Antwort Anycorn
Meine sein, können Sie tee-Befehl um die Ausgabe auf STDOUT als auch in eine Datei und dann verwenden Sie es.
InformationsquelleAutor der Antwort Raghuram
Dies ist eine Funktion Ihres Terminals. Sollten Sie konzentrieren sich auf die Schaffung einer Einrichtung, wo Sie nicht zu erinnern, etwas zu tun. Eine mögliche Lösung ist, um zu starten "Bildschirm" in Ihrem login-Skript (das ist nicht so leicht zu bekommen rechts) mit aktivierter Protokollierung.
InformationsquelleAutor der Antwort Mark Wagner
Können Sie immer führen Sie den Vorgang innerhalb eines emacs-shell-Fenster. Es werde alles behalten.
InformationsquelleAutor der Antwort Bruce Barnett