Stoppt die automatische Ausführung des Terminals, wenn ein Befehl eingefügt wird

27

Richtig, das ist ein etwas nerviges Feature, weil etwas passiert, und manchmal nicht, sehr seltsam.

Ich füge einen Befehl in das Terminal ein, um seine Argumente zu optimieren, und manchmal wird er ausgeführt, sobald ich ihn einfüge. Manchmal nicht.

Dies reicht von peinlich (Veröffentlichen unsinniger Kommentare in einem IRC) bis gefährlich.

Wie kann ich diese Funktion endgültig ausschalten? Ich möchte niemals, dass das Terminal beim Einfügen automatisch ausgeführt wird.

Starkers
quelle
Vielleicht von Interesse - bbs.archlinux.org/viewtopic.php?id=95548 , auch Leute haben Exploits gemacht, indem sie Inhalte in einem Copy / Paste versteckt haben. reddit.com/r/linux/comments/1bv54e/…
Mateo
1
Wow, eine Funktion sollte in Ubuntu eingebaut sein, um dies zu stoppen. Wann möchten Sie jemals einen Wagenrücklauf in das Terminal einfügen?
Starkers
Einer der Fehlerbehebungen wäre die Verwendung von ähnlichen oh-my-zshoder anderen Terminal-Ersetzungen.
Pramesh Bajracharya

Antworten:

28

Es gibt keine automatische Ausführung. Sie kopieren wahrscheinlich auch einen Zeilenumbruch (oder mehr) nach dem Befehl.

Wenn Sie einen Befehl mit einer Unterbrechung einfügen , glaubt die Shell (Befehlszeile), dass Sie die Unterbrechungstaste (Eingabe, Rückgabe) selbst gedrückt haben.


Diese Antwort erklärt nur, warum OP das unerwünschte Verhalten erhält. In einer anderen Antwort gibt es jedoch eine echte Lösung für das OP-Problem.

Mitchkman
quelle
5
Stimmt, aber die Frage ist, wie man es wenn möglich
aufhält
1
Ein Update
Pawel Cioch
13

Eine echte Lösung besteht darin, den Bearbeitungsmodus mit zu öffnen ctrl-x ctrl-eund die Zwischenablage dann sicher in den Editor Ihrer Wahl einzufügen (normalerweise Emacs oder Vim). Nachdem Sie den Befehl bearbeitet haben, speichern und beenden Sie ihn und er wird in der Befehlszeile ausgeführt. Dies ist eine gute Angewohnheit für lange oder komplexe Befehle, insbesondere beim Einfügen von Festschreibungs-Hashes in Git-Befehle, und kann Ihnen helfen, auf lange Sicht einige beängstigende Ergebnisse zu vermeiden.

Der Editor kann durch Setzen der Variablen VISUAL und EDITOR geändert werden (diese haben unterschiedliche Bedeutungen, siehe hier ).

Borrascador
quelle
wow, es gibt immer etwas zu lernen nach jahrzehntelanger Benutzung von Linux :) danke, dies ist die einzige Antwort, die das Problem tatsächlich löst
törzsmókus
Klingt so, als würde es für ein echtes Linux-Terminal funktionieren, aber für PuTTY-Benutzer ist dies leider nicht hilfreich. Irgendwelche anderen Alternativen?
Codesmith
1
@Codesmith Ich glaube, dass Pawel Chiochs Kommentar zur akzeptierten Antwort für Sie hilfreich sein kann: serverfault.com/questions/731022/…
borrascador
1
Guter Punkt @borrascador! Ich bin mir nicht sicher, wie ich das verpasst habe. Vielen Dank! :)
Codesmith
5

Geben Sie vor dem Einfügen ein # ein und fügen Sie dann Ihre Zeile ein. Es wird nicht ausgeführt und Sie können das # entfernen und die Eingabetaste drücken, wenn die Änderungen abgeschlossen sind.

Lanze
quelle
Sie können auch trueAKA verwenden :, was im Grunde genommen ein No-Op-Befehl ist.
wjandrea
1
@WJAndrea Ich würde sagen, dass dies weniger ratsam ist, da es den Exit-Status überlastet ( $?) ... trueist nicht wirklich ein NOP, es gibt den Exit-Status 0 zurück. Ein Kommentar hingegen wird vollständig ignoriert und wird es daher nicht ändern $?.
Brhfl
4
Dies stoppt nur die Ausführung der ersten Zeile . Wenn OP einen Text mit mindestens zwei Zeilenumbrüchen einfügt, werden diese erneut verschraubt.
Törzsmókus