如何将多行bash代码粘贴到终端并立即运行?

Nat*_*han 78 linux bash shell terminal paste

我需要将多行bash代码粘贴到终端中,但每当我这样做时,每一行都会在粘贴后立即作为单独的命令运行.

ops*_*guy 82

\在复制之前尝试放在每行的末尾.

  • 注意:尾随空格会打破它! (12认同)

Try*_*ain 34

我真的很惊讶这里没有提供答案,我正在寻找这个问题的解决方案,我认为这是最简单的方法,更灵活/宽容......

如果你想将网站/测试编辑器/等中的多行粘贴到bash中,无论它是每行命令还是函数或整个脚本......只需以a开头(并以a )和Enter 结束,就像在以下示例:

如果我有以下blob

function hello {
    echo Hello!
}
hello
Run Code Online (Sandbox Code Playgroud)

您可以使用bash在终端中粘贴和验证:

1)从开始 (

2)粘贴文本,然后按Enter(使其漂亮)......或不

3)用a结束)并按Enter键

例:

imac:~ home$ ( function hello {
>     echo Hello!
> }
> hello
> )
Hello!
imac:~ home$ 
Run Code Online (Sandbox Code Playgroud)

粘贴的文本会自动继续,>每行前置.我已经测试了多行,每行,函数和整个脚本都有命令.希望这有助于他人节省一些时间!

  • 最简单的方法IMO (3认同)

iti*_*var 26

如果按下C-x C-e将打开定义的默认编辑器的命令.bashrc,之后您可以使用编辑器的所有强大功能.保存并退出时,行将等待您的输入.

如果要定义编辑器,只需为Ex编写.EDITOR=emacs -nw或者EDITOR=vi里面~/.bashrc

  • 该技术很有用,但是请注意,编辑器必须运行_synchronously_(就像emacs和vi一样),并且在保存和退出命令时都必须_instantly_执行。 (2认同)

gle*_*man 15

除了反斜杠,如果一行以|&&或结束||,它将在下一行继续.


Len*_*oyt 15

另一种可能:

bash << EOF
echo "Hello"
echo "World"
EOF
Run Code Online (Sandbox Code Playgroud)


abr*_*rkn 10

在行周围添加括号.例:

$ (
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
)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,就像paranthesis`(`,括号`{`在上面的例子中也会起作用 (2认同)
  • 这似乎是重复的 [本页较早的答案](/sf/answers/3021494311/) (2认同)

nvd*_*nvd 5

为了防止文本文件中出现一长行命令,我将复制代码片段保留如下:

echo a;\
echo b;\
echo c
Run Code Online (Sandbox Code Playgroud)