Ich muss einen mehrzeiligen Bash-Code in das Terminal einfügen, aber jedes Mal, wenn ich dies tue, wird jede Zeile als separater Befehl ausgeführt, sobald sie eingefügt wird.
98
Versuchen Sie, \
am Ende jeder Zeile zu stehen, bevor Sie sie kopieren.
Ich bin wirklich überrascht, dass diese Antwort hier nicht angeboten wird. Ich war auf der Suche nach einer Lösung für diese Frage und denke, dies ist der einfachste Ansatz und flexibler / verzeihender ...
Wenn Sie mehrere Zeilen von einer Website / einem Texteditor / usw. in Bash einfügen möchten, unabhängig davon, ob es sich um Befehle pro Zeile oder eine Funktion oder ein gesamtes Skript handelt, beginnen Sie einfach mit a
(
und enden Sie mit a)
und Enter, wie z im folgenden Beispiel:Wenn ich den folgenden Blob hätte
Sie können ein Terminal mit bash einfügen und überprüfen, indem Sie:
Beginnen mit
(
Fügen Sie Ihren Text ein und drücken Sie die Eingabetaste (um ihn hübsch zu machen) ... oder nicht
Beenden Sie mit a
)
und drücken Sie die EingabetasteBeispiel:
Der eingefügte Text wird automatisch mit einem Voranstellen
>
für jede Zeile fortgesetzt . Ich habe mit mehreren Zeilen mit Befehlen pro Zeile, Funktionen und ganzen Skripten getestet. Hoffe das hilft anderen etwas Zeit zu sparen!quelle
Wenn Sie den
C-x C-e
Befehl drücken , wird der definierte Standardeditor geöffnet.bashrc
, können Sie danach alle leistungsstarken Funktionen Ihres Editors verwenden. Wenn Sie speichern und beenden, warten die Zeilen auf Ihre Eingabe.Wenn Sie Ihren Editor definieren möchten, schreiben Sie einfach für Bsp.
EDITOR=emacs -nw
oderEDITOR=vi
innerhalb von~/.bashrc
quelle
emacs
undvi
wie) ausgeführt werden muss und beim Speichern und Beenden der Befehle sofort ausgeführt wird .Wenn eine Zeile mit
|
oder&&
oder endet||
, wird sie zusätzlich zum Backslash in der nächsten Zeile fortgesetzt.quelle
Fügen Sie Klammern um die Linien hinzu. Beispiel:
quelle
(
, dass Zahnspangen wie bei Klammern{
im obigen BeispielAndere Möglichkeit:
quelle
Um eine lange Reihe von Befehlen in einer Textdatei zu vermeiden, behalte ich meine Copy-Pase-Snippets wie folgt:
quelle
Versuchen Sie Folgendes:
quelle
iTerm verarbeitet mehrzeilige Befehle perfekt. Es speichert mehrzeilige Befehle als einen Befehl. Anschließend können wir mit
Cmd
+Shift
+;
im Verlauf navigieren.Weitere iTerm-Tipps finden Sie unter Effektiv mit iTerm arbeiten
quelle
Versuchen
Fügen Sie dann Ihre Zeilen ein und drücken Sie Strg-D (EOF-Zeichen einfügen). Alle Eingaben bis Strg-D werden an die Standardausgabe der Katze weitergeleitet.
quelle
$ out=$(cat) && eval "$out"
. Drücken Sie nach der letzten Zeile die Eingabetaste und dann STRG + D wie oben vorgeschlagen.