使用";"时的差异或" |"命令行中的符号

时间:2016-04-19 15:15:27

标签: linux bash

我想一切都在标题中。我目前正在学习bash脚本,我读到我们可以使用" |"符号,或者";"符号在一个命令行上执行两个命令。

这个问题只是出于好奇,有人知道它有什么不同吗?

3 个答案:

答案 0 :(得分:2)

分号让程序的输出回显到tty。

输出到管道右侧的程序的管道。

E.g。

# execute foo, then execute bar,
# letting each program output to the terminal
foo ; bar

# execute foo and bar at the same time,
# hooking up the STDOUT from foo into the STDIN to bar,
# letting bar output to the terminal
foo | bar

答案 1 :(得分:2)

这两个符号有不同的用法。

分号符号

用于在没有输入的情况下相互执行一些命令。

echo 1; echo 2; echo 3
# is equal to:
echo 1
echo 2
echo 3

管道符号

管道是一种进程间通信方式 process1可以向process2发送内容 这里,command1和command2是进程。

command1 | command2

command1的输出作为输入提供给command2

enter image description here

答案 2 :(得分:1)

;分隔符是顺序的,如C:

ls ; sort

在此示例中,首先运行ls,然后bash将wait()完成;然后运行sort

|分隔符意味着两件事:它周围的命令是并行运行的,左命令的输出通过管道重定向到右命令的输入:

ls | sort

bash中还有其他分隔符:&(并行),||&&(顺序)。