Wenn ich in meine Terminalsitzung einfüge, führt die Shell den Befehl sofort aus, ohne dass ich die Eingabetaste drücke.
Ich weiß wirklich nicht, wie ich dieses Verhalten deaktivieren soll.
Ich verwende das vorinstallierte Terminal unter MacOS Yosemite.
bash
(mit Hilfe vonreadline
) hat eine Lösung.Antworten:
Mit
bash
4.4 oder neuer und in Terminals, die das Einfügen in Klammern unterstützenxterm
, können Sie Folgendes tun:(oder
set enable-bracketed-paste
zu Ihrem hinzufügen~/.inputrc
)Das bewirkt , dass die Copy-Paste - Puffer darin an der Eingabeaufforderung anstelle der Zeichen eingefügt werden , wie zu interpretieren , wenn getippt (Sie immer noch Probleme haben könnten , wenn dieser Puffer enthalten Zeichen wie
^C
,^Z
und Terminal - Emulator ist sie nicht ausfiltern) .zsh
macht das standardmäßig seit Version 5.1.Weitere Shells oder Terminals finden Sie auch unter: Wie kann ich mich vor dieser Art von Missbrauch in der Zwischenablage schützen?
quelle
xterm
, das können Sie stattdessen versuchen. Haben Sie dasperl
Skript bei der verknüpften Frage ausprobiert ?Dies geschieht, wenn Sie ein "Zeilenumbruch" -Zeichen einfügen. Wenn Sie beispielsweise mehrere Zeilen einfügen oder auf unbekannte Weise einen Wagenrücklauf am Ende der Zeile kopieren. AFAIK Es gibt keine Möglichkeit, dieses Verhalten tatsächlich zu deaktivieren, aber es gibt Möglichkeiten, es zu mildern.
Am einfachsten ist es, jeweils nur eine Zeile zu kopieren und das letzte Zeichen zu verpassen, um es anschließend manuell hinzuzufügen.
Wie the_velour_fog weiter unten ausführt, können Sie es auch in einen Editor einfügen, der nicht gedruckte Zeichen anzeigt, und ohne die neue Zeile erneut auswählen.
Es gibt ein oder zwei Problemumgehungen für GNU / Linux-Distributionen, aber keine Ahnung, ob das Konzept auf MacOS portiert werden könnte. Schauen Sie sich hier an, ob es eine ähnliche Datei auf dem Mac gibt, die Sie ändern können. Leider bezweifle ich es.
quelle
Geben Sie vor dem Einfügen ein einfaches Anführungszeichen ein und fügen Sie es ein. Strg-C und Aufwärtspfeil, um es als eine riesige Linie zu bearbeiten.
doppelte Anführungszeichen funktionieren auch, wenn der Text einfache, aber keine doppelten Anführungszeichen enthält. Es ist in Ordnung, wenn es
$
oder andere Dinge enthält , die in doppelten Anführungszeichen erweitert werden, da Sie die zitierte Riesenzeile nicht als einen Befehl ausführen.Sie können das Ganze nicht direkt dort bearbeiten, da Zeilenumbrüche eine Fortsetzungsaufforderung (nicht die offizielle Terminologie) starten, anstatt eine große lange Zeile zu erstellen.
gegeben diese 4 Zeilen:
Das Einfügen, wie ich vorschlage, führt dazu, dass dies auf Ihrem Bildschirm angezeigt wird:
Sie können dann Strg-C und Aufwärtspfeil drücken. (Strg-C zerstört alles in derselben Zeile wie der Cursor. Drücken Sie also zuerst die Eingabetaste, wenn dort nützlicher Text vorhanden ist.)
Eine Alternative besteht darin, das Angebot zu schließen und die Eingabetaste zu drücken und dann den Aufwärtspfeil zu drücken.
Wie auch immer, nach dem Aufwärtspfeil
Control-A und entfernen Sie die Führung
'
. Verwenden Sie Strg-Links und Strg-Rechts, um sich schnell (mit Worten) durch den Einfügeblock zu bewegen. Oder wenn Ihr Terminal-Setup keine Steuerpfeiltasten, Alt-B und Alt-F unterstützt.Die wörtlichen Zeilenumbrüche trennen tatsächlich Befehle, und diese 4 Zeilen werden separat in Ihren Befehlsverlauf aufgenommen . Vielleicht möchten Sie sie in
;
oder ändern&&
. (Ich kenne keinen Trick dafür. Verwenden Sie einfach die Tastenwiederholung für Vorwärts- oder Rückwärtswort, um schnell dorthin zu gelangen und dies manuell zu tun.)quelle
Dies geschieht, weil Ihre Einfügung mit einer neuen Zeile endet und Terminalemulatoren die Einfügung grundsätzlich zeichenweise Bash zuführen. In diesem Prozess kennt bash die menschliche Schreibkraft nicht wirklich von einer Maschine.
Normalerweise achte ich beim Einfügen nur darauf, dass es keine neue Zeile enthält, aber es gibt einen Trick, den Sie ausprobieren können: Geben Sie vor dem Einfügen in Bash ein
C-x C-e
. Es sollte$EDITOR
mit einer leeren Datei gestartet werden. Was auch immer Sie in dieser Datei speichern und beenden, Bash wird ausgeführt. So können Sie jetzt Ihren Befehl in den Editor einfügen, möglicherweise die Dinge weiter bearbeiten und sie dann alle auf einmal ausführen.quelle
Ich bin NICHT mit dem Unternehmen verbunden, ich bin ein sehr zufriedener Kunde. Probieren Sie dieses Terminalprogramm aus: http://www.emtec.com/zoc/index.html . Es gibt auch eine Mac-Version.
Wenn ich mit dieser Antwort gegen eine SE-Regel verstoße, lass es mich wissen und ich lösche die Antwort.
Bearbeiten:
Wenn ich die anderen Antworten richtig verstanden habe, kann dieses Problem durch das Terminalprogramm verursacht werden. Das ZOC-Terminalprogramm ist eine professionelle Software, die perfekt für die Arbeit entwickelt wurde. Der ausgewählte Text wird ohne zusätzliches Zeichen eingefügt. Sie können Ihre Sitzungen in einer separaten Textdatei protokollieren. Und vieles mehr
Aktualisieren:
Das Terminalprogramm hat eine Option
Paste without final 'newline'
. Vielleicht hilft das.quelle