Bash同时执行多条命令

以下要用到3条命令

  • touch 创建一个文件
  • echo 打印字符串 >> 是将输出追加到目标,比如>> a.txt,是将输出追加到文件a.txt 的末尾。
  • cat 显示文件内容
1.顺序执行 ;

用 “;” 分隔多条命令可以顺序执行,不管前面的命令有没有成功,都会往后执行下一条,如下3条命令
用touch 创建一个文件,

把”hello” 写入文件,

打印显示文件内容

1
2
3
4
5
intellif@ubuntu:~/bash_prj$ touch a.txt;echo "hello" >>a.txt;cat a.txt
hello
intellif@ubuntu:~/bash_prj$ cat a.txt
hello
intellif@ubuntu:~/bash_prj$
2.前一条执行成功则执行后一条 &&
1
2
3
intellif@ubuntu:~/bash_prj$ touch b.txt && echo "hello" >>b.txt
intellif@ubuntu:~/bash_prj$ cat b.txt
hello
3.前一条执行失败则执行后一条 ||
1
2
3
4
5
intellif@ubuntu:~/bash_prj$ touch c.txt || echo "hello" >>c.txt
intellif@ubuntu:~/bash_prj$ cat c.txt
intellif@ubuntu:~/bash_prj$
intellif@ubuntu:~/bash_prj$ ls
b.txt c.txt

可以看到cat c.txt 无结果,因为||之前的命令没有失败,所以 echo "hello" >>c.txt 并没有执行

4.自由组合

以上3个分隔符可自由组合,没有优先级,从左往右解释。

1
2
intellif@ubuntu:~/bash_prj$ touch d.txt && echo "hello" >>d.txt;cat d.txt||echo "这里不执行"
hello
5.命令换行

按下回车命令就开始执行,如果命令过长,可以添加 \ ,此时按回车会换行可继续写命令。

可在命令的任意位置通过 \ 分隔换行

1
2
3
4
5
6
7
8
9
10
11
# 把echo 拆了
intellif@ubuntu:~/bash_prj$ ec\
> ho hello
hello

# 把 && 拆了
intellif@ubuntu:~/bash_prj$ echo hello &\
> & echo world
hello
world

可分隔多行,这里用到了echo的-n参数,表示不需要打印换行符。

1
2
3
4
intellif@ubuntu:~/bash_prj$ echo -n hello; \
> echo -n world;\
> echo !
helloworld!

如果需要终止输入,按ctrl+c即可。

1
2
3
4
intellif@ubuntu:~/bash_prj$ echo hello;\
> ^C
intellif@ubuntu:~/bash_prj$