Wenn Sie einen Befehl in das Terminal einfügen, wird er manchmal automatisch ausgeführt (genau wie wenn die Eingabetaste gedrückt wurde), manchmal nicht.
Ich benutze Linux seit Ewigkeiten, habe Tausende von Befehlen in verschiedenen Konsolen auf vielen Distributionen eingefügt und kann immer noch nicht sagen, ob der Befehl, den ich einfügen möchte, automatisch ausgeführt wird oder nicht.
Was löst dieses Verhalten aus?
{
vor dem Einfügen (mit Leerzeichen) ein und beenden Sie die Eingabe mit}
. Es hat keine Auswirkung auf die Funktionsweise von eingefügten Befehlen, verhindert jedoch, dass die Shell es ausführt, bis Sie den Block schließen. Beschrieben hier [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]Antworten:
Es ist das Rückkehrzeichen in dem zu kopierenden Text, das die automatische Ausführung auslöst.
Nehmen wir ein anderes Beispiel, kopieren Sie diese Zeilen auf einmal und fügen Sie sie in Ihr Terminal ein:
Wenn Sie in Ihr Terminal schauen, sehen Sie Folgendes nicht:
Sie werden dies sehen (es kann auch eine Zeile mit der Aufschrift sein
World
):Anstatt darauf zu warten, dass alle Eingaben eingefügt werden, wird die erste Zeile ausgeführt (und aus dem gleichen Grund kann die zweite Zeile dies auch tun oder nicht). Dies liegt daran, dass
RETURN
sich zwischen den beiden Zeilen ein Zeichen befindet.Wenn Sie die
ENTER
Taste auf Ihrer Tastatur drücken , senden Sie nur das Zeichen mit dem ASCII-Wert von13
. Dieses Zeichen wird sofort von Ihrem Terminal erkannt und verfügt über spezielle Anweisungen, um das auszuführen, was Sie bisher eingegeben haben.Wenn das
RETURN
Zeichen auf Ihrem Computer gespeichert oder auf Ihrem Bildschirm gedruckt wird, entspricht es genau einem anderen Buchstaben des Alphabets, der Zahl oder des Symbols. Dieses Zeichen kann mit der Rücktaste gelöscht oder wie jedes andere reguläre Zeichen in die Zwischenablage kopiert werden.Der einzige Unterschied besteht darin, dass Ihr Browser erkennt, dass ein sichtbares Zeichen nicht gedruckt , sondern anders behandelt werden muss, und dass er spezielle Anweisungen zum Verschieben des nächsten Textsatzes in die nächste Zeile enthält. Aus diesem Grund werden das
RETURN
Zeichen und dasSPACE
Zeichen (ASCII32
) zusammen mit einigen wenigen anderen selten verwendeten Zeichen als "nicht druckbare Zeichen" bezeichnet.Wenn Sie Text von einer Website kopieren, ist es manchmal schwierig, nur den Text und nicht den Zeilenumbruch am Ende zu kopieren (und dies wird häufig durch die Gestaltung der Seite erschwert).
Versuchszeit!
Im Folgenden finden Sie zwei Befehle, die das Problem veranschaulichen und mit denen Sie "üben" können. Starten Sie Ihren Cursor direkt vor
echo
und ziehen Sie, bis sich die Markierung direkt vor dem Pfeil befindet:Und jetzt versuchen Sie den zweiten Befehl. Starten Sie Ihren Cursor direkt vor
echo
und ziehen Sie ihn nach unten, bis sich der Cursor in der zweiten Zeile befindet, sich jedoch direkt vor dem<-
Pfeil befindet. Kopieren Sie es und fügen Sie es in Ihr Terminal ein:Abhängig von Ihrem Browser kann es sein, dass der ausgewählte Text nicht mehr als zwei Zeilen lang ist. Aber wenn Sie es in das Terminal einfügen, werden Sie feststellen, dass es die Zeile ausführt, weil es ein gefunden hat
RETURN
Zeichen im kopierten Text gefunden hat.quelle
Wenn Sie Text auswählen und die (unsichtbare) neue Zeile am Ende einer Zeile einfügen, wird sie in den eingefügten Text eingefügt. Dies gilt für alle mir bekannten Terminalemulatoren. Die Newline macht das, was Sie "validieren" nennen.
Auf einigen Systemen (z. B. solchen, die synchrone Terminals wie IBM 3270 verwenden) Enter"validierte" der Schlüssel den Bildschirm, indem er alle Änderungen auf den Host kopierte.
quelle
Die anderen Antworten haben die Frage gut beantwortet, aber ich dachte, ich würde auch eine Lösung finden, um zu verhindern, dass dies versehentlich passiert, wenn Sie PuTTY unter Windows verwenden - siehe /server/731022/prevent-accidental -ausführung-von-befehlen-in-linux-wenn-text-mit-einer-einfügung für details.
quelle
Das Newline-Zeichen.
quelle