Beim Auslösen von Befehlen in CLI möchte ich den Befehl, den ich gerade ausgelöst habe, oder alles, was ich im Terminal geschrieben habe , kopieren und an einer anderen Stelle einfügen, ohne die Maus zu verwenden.
Wie im folgenden Bild möchte ich den Update-Befehl (ganz oder teilweise) kopieren, ohne die Maus zu verwenden, und ihn irgendwo einfügen.
Antworten:
Sie können verwenden
screen(1)
in Ihrem Terminal - Emulator der Wahl (xterm
,gnome-terminal
, ...).Die Funktionalität, die Sie benötigen, ist integriert
screen
. Sie müssen sich mit der Funktionsweise vertraut machen:Sie können den Befehl "kopieren" und in ein anderes Terminal "einfügen".
screen
macht Spaß und sobald Sie anfangen es zu benutzen, werden Sie sich fragen, wie es möglich ist, dass Sie es überhaupt nicht benutzt haben.quelle
screen
Befehl gab, habe ich ihn in gnome-terminal installiert undscreen
in einem Terminal gestartet . Konnte danach aber nicht mehr loslegen. Ich habe auch nicht verstanden, was Sie mit eingebautem Bildschirm meinen.man screen
. Auch schrieb ich ‚Built-in im Bildschirm‘, was bedeutet , das Kopieren / Einfügen - Funktionalität in istscreen
durch Design .space
Taste verwenden, um den gewünschten Bereich auszuwählen. Sie müssen verwenden,Y
um die gesamte Zeile oder den gewünschten Bereich zu kopieren. Bildschirm istvi
bewegungsfreundlich.AltGr
Schlüssel? Ich habeAlt
screen
Tool funktioniert nicht hat hier erklärt. Und es scheint keine Antwort auf die Frage zu geben.Zusätzlich zu den bereits bereitgestellten Antworten können Sie einen Umstieg auf einen flexibleren Terminalemulator in Betracht ziehen.
Wenn Sie bereit wären, Terminals in rxvt- unicode zu ändern , könnten Sie ein Tool wie urxvt-perls verwenden : eine Sammlung von Skripten, die die folgenden Tastaturfunktionen in diesem Terminalemulator bereitstellen:
Sie installieren einfach das Paket und fügen dann ein paar Zeilen zu Ihrem hinzu
~/.Xresources
, und Sie können das Nagetier dann endgültig ausstecken.quelle
Sie können dies mit einem Programm wie dem
xclip
folgenden tun :Sobald Sie es installiert haben, können Sie es verwenden, um eine Verbindung zu Ihrer X-Zwischenablage herzustellen. Leider funktioniert dies in Ihrer
mysql
Umgebung nicht (es hat einen eigenen Puffer für kopierte Zeilen), aber es funktioniert, wenn Sie einen "normalen" Befehl ausführen möchten. Beispielsweise :Geben Sie Folgendes ein CtrlA, um an den Anfang der Zeile zu gelangen, setzen Sie den Befehl in Anführungszeichen und wiederholen Sie ihn:
Sie haben jetzt "Dies ist eine lange Befehlszeile" in Ihrer mittleren Klick-Zwischenablage.
Wenn Sie einfügen möchten, ohne eine Maus zu verwenden, hängt es davon ab, wo Sie einfügen. Sie können Folgendes in ein anderes Terminal einfügen:
Sie können in dasselbe Terminal einfügen, indem Sie einfach den Befehl mit CtrlKbeenden (ausschneiden) und dann mit einfügen CtrlY.
Sie können Befehle auch über Terminals hinweg speichern, indem Sie den Bash-Verlauf verwenden. Fügen Sie diese Zeile zu Ihrem hinzu
~/.bashrc
:PROMPT_COMMAND
ist eine spezielle Bash-Variable. Wenn es gesetzt ist, wird der Wert als Befehl ausgeführt, bevor eine neue Eingabeaufforderung ausgegeben wird.history -a
schreibt den Verlauf der aktuellen Sitzung in die Verlaufsdatei undhistory -r
lädt diese neu. Dies bedeutet, dass jeder Befehl, den Sie ausführen, sofort in die Verlaufsdatei geschrieben wird.Wenn Sie nun eine lange Befehlszeile ausführen, können Sie zu einem anderen Terminal wechseln und die Eingabetaste drücken (um
$PROMT_COMMAND
alternativ ein neues Terminalfenster zu öffnen). Auf dieses Fenster kann dann auf den Verlauf dieses Terminals zugegriffen werden. Wenn Sie jetzt drücken Up, können Sie es auf dem neuen Terminal ausführen.quelle
$ xclip -o
ist nicht das, was ich will, weil es nur das druckt, was ichxclipe
d. Aber +1 fürCtrl+A
gefolgt vonCtrl+K
undCtrl+Y
zum Ausschneiden und Einfügen in das mindestens gleiche Terminal.@evilsoup hat eine gute Lösung vorgeschlagen, die jedoch häufig abbricht.
Eine schnelle Lösung
Hier ist eine Lösung, die niemals bricht .
Führen Sie einfach diesen Befehl aus, und der soeben ausgeführte Befehl wird in die Zwischenablage kopiert.
Im Grunde bedeutet dies, dass der Befehlsverlauf gedruckt und der vorletzte Befehl in die Zwischenablage übernommen wird (der letzte Befehl ist derselbe, sodass der vorletzte Befehl ausgewählt wird).
Eine benutzerdefinierte Funktion
Hier ist eine kleine Funktion, die ich geschrieben habe. Sie ist ziemlich clever und kopiert den zuletzt verwendeten Befehl. Sie können auch numerische Argumente angeben, um den letzten n-ten Befehl zu kopieren. ZB zum Kopieren des vorletzten Kommandos
2
als Argument angebenKopieren Sie die obige Funktion und fügen Sie sie in Ihre
~/.bashrc
Datei ein. Beachten Sie, dass, wenn Sie dies in eine separate Bash-Skriptdatei einfügen und das Skript ausführen, dies nicht funktioniert, da der Befehl history in diesem Fall nicht auf Ihren Verlauf zugreifen kann.Führen Sie es schließlich aus als:
Darüber hinaus ist eine coole Eigenschaft, die zu dieser Funktion hinzugefügt wurde, dass sie sich selbst aus dem Verlauf löscht, nachdem sie ausgeführt wurde. Dies ist hilfreich, da sich dann der "Rückwärts" -Index der Befehle nicht ändert.
quelle
screen
. Die zweithöchste Antwort hatte ebenfallsbash
und angenommenlinux
. Darüber hinaus ist die Annahmebash
keine große Sache, da das Skript in zsh oder den meisten anderen Shells noch funktionieren würde.Dieser Befehl verwendet die History-Erweiterung von bash (
!!
erweitert sich also in die letzte Zeile, die Sie in das Terminal eingegeben haben). Sie müssen wahrscheinlich entwederxclip
oder installierenxsel
.Dies wird Ihren letzten Befehl in dem setzen Ctrl+ vZwischenablage, so Sie in der Lage sein werden , in jedes GUI - Programm einzufügen in (oder mit Ctrl+ Shift+ vin den meisten Terminal - Emulatoren, oder mit
"+p
in vim).Dies wird für einige Zeilen, die doppelte Anführungszeichen enthalten, unterbrochen, zum Beispiel:
Dies funktioniert jedoch für den Befehl, den Sie als Beispiel angegeben haben. Sie sollten nur dann Probleme haben, wenn die doppelten Anführungszeichen ausgeblendet werden
;
&
&&
|
||
und so weiter.quelle
echo !!
und es wird funktionieren einwandfrei (außer im unwahrscheinlichen Fall , dass Ihr vorheriger Befehl begann mit-n
oder-e
oder den wenigen anderen Optionen , dieecho
ich nimmt).Vielleicht nicht die bequemste Lösung, aber ich benutze sie und sie kann daher für andere hilfreich sein, da keine zusätzliche Soft-Installation erforderlich ist.
Sie müssen eine temporäre Datei in einem beliebigen Verzeichnis erstellen
Übertragen Sie die gewünschte Richtung oder den gewünschten Text in diese Datei. Zur Richtungsübertragung können Sie verwenden
Verwenden Sie den Befehl, um die Richtung aus der Datei abzurufen
Zum Kopieren und Einfügen von Befehlen funktioniert dieses System natürlich. Hoffe das war hilfreich
quelle