Verwenden von Text aus der Ausgabe vorheriger Befehle

Verwenden von Text aus der Ausgabe vorheriger Befehle

EDIT April 2015: Wenn Sie dieselbe Frage haben, empfehle ich Ihnen auch,http://xiki.org/


Ich weiß, dass Terminals nicht so funktionieren, aber ich wünsche mir oft, dass es eine einfache Möglichkeit gäbe, Text zu verwenden (zu kopieren, zu ändern usw.), der sich aufgrund einer früheren Befehlsausgabe bereits im Verlauf meines Terminalfensters befindet.

Ich habe mir das so vorgestellt:

Ich bin in meiner Bash-Shell und möchte gerade einen Befehl eingeben, als mir klar wird, dass ich etwas eingeben muss, das bereits ein paar Zeilen weiter oben auf dem Bildschirm angezeigt wird. Ich kann nach der Maus greifen und es auswählen, aber das hasse ich. Was ich mir in diesem Moment wirklich wünsche, ist, dass mein gesamtes Terminal zu einem riesigen Vim-Puffer wird, alles davon: die Eingabeaufforderungen, die Befehle, die ich eingegeben habe, und die Ausgabe dieser Befehle. Alles. Und dann könnte ich ein paar Zeilen nach oben springen, vielleicht ein wenig bearbeiten und etwas Text herausziehen. Dann kehre ich in den Bash-Shell-Modus zurück und füge alles, was ich herausgezogen habe, in die aktuelle Befehlszeile ein.

Ich weiß, dass es einige Optionen gibt:

  • Natürlich kann ich den benötigten Text direkt aus der Ausgabe eines Befehls in eine Datei oder direkt zum nächsten Befehl weiterleiten. Aber dafür müssen Sie im Voraus planen oder den Befehl aus Ihrem Verlauf erneut ausführen (vorausgesetzt, die Ausgabe ändert sich zwischen den Aufrufen nicht).

  • Nach der Maus greifen und den zu kopierenden Text auswählen. Lahm, nervig, ich wünschte, ich müsste das nicht tun (das ist nicht die GUI-Stackexchange-Site, oder? =)

  • Um die Option „Text exportieren als ...“ meiner (Mac OS X) Terminalanwendung zu verwenden und den Terminaltext in einer Datei zu speichern. Öffnen Sie dann die Datei und arbeiten Sie damit. Fast, aber warum sollte man den Schritt des Speicherns in einer Datei auf der Festplatte durchführen?

Die Frage ist also: Was tun Sie in dieser Situation? Gibt es einen Trick, ein Tool oder eine Shell-Funktion, die in diesem Szenario nützlich sein könnte? Geben Sie sich damit zufrieden, die Maus zu verwenden oder alles, was Sie eingeben müssen, erneut einzugeben?

Vielleicht liegt das Problem darin, dass ich die Dinge nicht „auf die Unix-Art“ mache, aber mal ehrlich, wir haben das Jahr 2010 und ich kann nicht einfach einen Text kopieren, der ein paar Zeilen von meinem Cursor entfernt ist?

Antwort1

In Emacs,Mx-SchaleBearbeitung der vorherigen Ausgabe handhaben. Sie können die Ausgabe vorheriger Befehle oder einen beliebigen Teil Ihres Puffers einfach kopieren und einfügen, wie einen normalen Puffer. Ich bin ziemlich sicher, dass es ein Vim-Äquivalent geben sollte.

Antwort2

In tmux (einem Terminal-Multiplexer) können Sie Strg+A-[ drücken, um in den Vi-Puffermodus zu wechseln, wo Sie auf dem Bildschirm navigieren, den Puffer vor- und zurückscrollen, Text kopieren usw. können. Die Standardverknüpfung ist eigentlich Strg+B-[, aber das sollte offensichtlich neu konfiguriert werden. Außerdem ist der Standardpuffermodus Emacs, aber Sie können ihn auf Vi konfigurieren.

Schauen Sie sich tmux an, es ist wirklich ein großartiger moderner Terminal-Multiplexer. Neben der Arbeit mit Puffern können Sie den Bildschirm in mehrere Fenster aufteilen, sich von mehreren Terminals aus mit derselben Sitzung verbinden usw. Für den größtmöglichen Komfort können Sie es sogar zu Ihrer Login-Shell machen, wenn Sie ihm mitteilen, was Ihre tatsächliche Shell ist.

Unter OpenBSD wurde tmux sogar zum Teil des Basissystems gemacht.

Weitere Einzelheiten finden Sie auf der Manpage für tmux. Siehe auch Screenshots aufhttp://tmux.sourceforge.net/

Antwort3

Sie könnten ein Skript verwenden (verwenden Sie -f, um sicherzustellen, dass es jedes Mal geleert wird) und Sie könnten die gesamte Ausgabe in einer Datei haben.

Verwenden Sie einen Terminal-Multiplexer (Screen, tmux usw.). Zum Beispiel für Screen http://web.mit.edu/gnu/doc/html/screen_11.html#

Befehl: Kopieren Wechselt in den Kopier-/Scrollback-Modus. Damit können Sie Text aus dem aktuellen Fenster und dessen Verlauf in den Einfügepuffer kopieren. In diesem Modus ist ein vi-ähnlicher Vollbildeditor mit den unten beschriebenen Steuerelementen aktiv.

Andere Terminal-Multiplexer verfügen sicherlich über erweiterte Funktionen.

Antwort4

Ich verwende urxvt (rxvt-unicode) und es gibt ein Paket namens urxvt-keyboard-select, das genau das sein könnte, was Sie wollen, wenn Sie urxvt installieren können. Die Archlinux-Paketinformationen (die Zeiger enthalten) finden Sie hier:

https://aur.archlinux.org/packages.php?ID=39950

Originalquelle: http://www.github.com/muennich/urxvt-perls

verwandte Informationen