Gibt es eine Möglichkeit, alles, was Sie kopieren, über einen Filter in die Zwischenablage zu kopieren? Idealerweise, um die nachfolgende Newline von etwas zu entfernen, das Sie kopieren, damit sie nicht automatisch im Terminal ausgeführt wird?
So sieht es aus, wenn ich den fraglichen Test kopiere, und manchmal vergesse ich, dass dies eine neue Zeile ist.
Antworten:
Gute moderne Terminals unterstützen das Einfügen in Klammern : Wenn Sie den Einfügebefehl des Terminals verwenden, werden spezielle Escape-Sequenzen um den Inhalt der Zwischenablage gesendet. Wenn Ihre Shell das Einfügen in Klammern unterstützt, wird der Inhalt der Zwischenablage einschließlich aller Steuerzeichen unverändert eingefügt, und insbesondere eine nachfolgende neue Zeile löst die Ausführung des Befehls nicht aus.
Zsh ≥5.1 unterstützt das Einfügen in Klammern und ist standardmäßig aktiviert. Ältere Versionen können unterrichtet werden . Bash ≥4.4 unterstützt klammert einfügen , wenn Sie hinzufügen
set enable-bracketed-paste on
zu~/.inputrc
.Wenn Ihr Terminal oder Ihre Shell das Einfügen in Klammern nicht unterstützt, können Sie eine Shell-Funktion definieren, die ohne den nachfolgenden Zeilenumbruch eingefügt wird.
In zsh ruft der folgende Befehl den Inhalt der Zwischenablage abzüglich nachfolgender Zeilenumbrüche ab und ruft ihn zur Bearbeitung auf (auch wenn mehrere Zeilen vorhanden sind):
In Bash können Sie den Inhalt der Zwischenablage abzüglich nachfolgender Zeilenumbrüche in den Verlaufsstapel verschieben. Drücken Sie danach Up, um den Befehl zum Bearbeiten aufzurufen.
quelle
Ja, verwenden Sie
cat
diese Option, um eine Datei einzufügen, tun Sie, was Sie möchten, und führen Sie sie dann aus.Für diesen Fall:
quelle
Dadurch wird
\ev
die Zwischenablage in Bash 4.0 und höher ohne Zeilenumbrüche eingefügt:Ersetzen Sie
xsel -b
durchpbpaste
und installieren Sie bash 4 in OS X.quelle
Mir wurde klar, dass wir es in einer Zeile schaffen können, inspiriert von der Antwort von @ RSFalcon7
mit
xsel
, um in die primäre Auswahl zu kopierenquelle