it-swarm.com.de

Wie füge ich mehrzeilige Bash-Codes in das Terminal ein und führe alles auf einmal aus?

Ich muss einen mehrzeiligen Bash-Code in das Terminal einfügen, aber wenn ich dies tue, wird jede Zeile als separater Befehl ausgeführt, sobald sie eingefügt wird.

57
Nathan

Platzieren Sie \ am Ende jeder Zeile, bevor Sie sie kopieren.

62
opsguy

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 ich denke, dies ist der einfachste Ansatz und flexibler/verzeihender ...

Wenn Sie mehrere Zeilen aus einer Website/einem Testeditor/etc in bash einfügen möchten, unabhängig davon, ob es sich um Befehle pro Zeile oder eine Funktion oder das gesamte Skript handelt, beginnen Sie einfach mit einem ( und enden mit einem ) und mit wie im folgenden Beispiel:

Wenn ich den folgenden Blob hätte

function hello {
    echo Hello!
}
hello

Sie können in einem Terminal mithilfe von bash einfügen und Folgendes überprüfen:

1) beginnend mit ( 

2) Fügen Sie Ihren Text ein und drücken Sie die Eingabetaste (um ihn schön zu machen) ... oder nicht

3) Beenden Sie mit einem ) und drücken Sie die Eingabetaste

Beispiel:

iMac:~ home$ ( function hello {
>     echo Hello!
> }
> hello
> )
Hello!
iMac:~ home$ 

Der eingefügte Text wird automatisch mit einem vorangestellten > für jede Zeile fortgesetzt. Ich habe mehrere Zeilen mit Befehlen pro Zeile, Funktionen und ganzen Skripts getestet. Hoffe, das hilft anderen, Zeit zu sparen!

22
TryTryAgain

Wenn Sie den Befehl C-x C-e drücken, wird der Standardeditor geöffnet, der .bashrc definiert hat. Danach können Sie 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 Ex. EDITOR=emacs -nw oder EDITOR=vi innerhalb von ~/.bashrc

19
itirazimvar

Wenn eine Zeile zusätzlich zum Backslash mit | oder && oder || endet, wird sie in der nächsten Zeile fortgesetzt.

11
glenn jackman

Fügen Sie Klammern um die Linien ein. Beispiel:

$ (
Sudo apt-get update
dokku apps
dokku ps:stop APP # repeat to shut down each running app
Sudo apt-get install -qq -y dokku herokuish sshcommand plugn
dokku ps:rebuildall # rebuilds all applications
)
6
abrkn

Um eine lange Zeile von Befehlen in einer Textdatei zu verhindern, halte ich meine Copy-Pase-Snippets wie folgt:

echo a;\
echo b;\
echo c
2
nvd

Andere Möglichkeit:

bash << EOF
echo "Hello"
echo "World"
EOF
1
Lenar Hoyt

iTerm behandelt den mehrzeiligen Befehl einwandfrei, speichert den mehrzeiligen Befehl als einen Befehl, dann können wir Cmd + Shift + verwenden. in der Geschichte navigieren. Weitere iTerm-Tipps finden Sie unter Effizientes Arbeiten mit iTerm

0
jeffery.yuan

Versuchen Sie es so:

echo $( 
    cmd1
    cmd2
    ...
)
0
voltento