我需要将一个多行的bash代码粘贴到终端,但每当我这样做时,每一行都会被立即运行为单独的命令。
在复制代码之前,尝试在每行末尾加上\
。
例如:
echo "Hello world" && \
script_b.sh
echo $?
现在退出码($?
)是完整的命令序列,而不仅仅是最后一个命令。
我很惊讶这个答案在这里没有被提供,我正在寻找一个解决这个问题的方法,我认为这是最简单的方法,而且更加灵活/宽容...
如果您想将来自网站/文本编辑器等的多行粘贴到bash中,无论是每行命令还是一个函数或整个脚本...只需以(
开头、以)
结尾并按Enter键,就像以下示例一样:
如果我有以下blob:
function hello {
echo Hello!
}
hello
你可以使用bash在终端中粘贴和验证,方法如下:
以 (
开始
粘贴你的文本,然后按Enter键(使其变得美观)...或不美观都行
以 )
结尾并按Enter键
示例:
imac:~ home$ ( function hello {
> echo Hello!
> }
> hello
> )
Hello!
imac:~ home$
每一行的文本都会自动添加一个前缀>
。我已经测试过多行命令、函数和整个脚本。希望这能帮助其他人节省一些时间!
C-x C-e
命令,将打开默认编辑器,该编辑器定义在 .bashrc
中,之后您可以使用编辑器的所有强大功能。 当保存并退出后,这些行将等待您输入。~/.bashrc
中写入例如 EDITOR=emacs -nw
或 EDITOR=vi
。emacs
和 vi
一样),并且在保存和退出时命令会 _立即执行_。 - mklement0另一个可能性:
bash << EOF
echo "Hello"
echo "World"
EOF
在这些行的周围添加括号。例如:
$ (
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
)
(
一样,在上面的示例中大括号 {
也可以起到同样的作用。 - GypsyCosmonaut除了反斜杠外,如果一行以|
或&&
或||
结尾,则会在下一行继续。
echo a;\
echo b;\
echo c
我认为对于非常长的命令(比如使用llvm编译文件!),与我过去尝试过的其他工具相比,这是最容易使用的。我经常在编辑器中使用它来分行输入命令:
cat | paste -sd " " - | xargs echo
cat | paste -sd " " - | xargs echo | sh
或者,我喜欢将输出作为别名命令放在.zshrc文件中。
alias mcmd='cat | paste -sd " " - | xargs echo'
然后执行
> mcmd | sh
这将打开cat,粘贴您的多行命令,按下ctrl d,将执行多行命令作为一行命令 :)
> mcmd;
# now paste in your long command
> llvm-g++
main.mm
-o
buildApp
-w
-g
-std=c++14
-L/System/Library/Frameworks/
-framework
CoreServices
# now key press ctrl + d
llvm-g++ main.mm -o buildApp -w -g -std=c++14 -L/System/Library/Frameworks/ -framework CoreServices
fc
命令将所有命令粘贴到编辑器中并一次性运行它们。fc
。 - Patrick Stetzfc
就可以展示它有多简单了。 - Patrick Stetz