Unix 管道 - echo 和 cat

Unix piping - echo and cat

我在 Unix 中使用以下命令时遇到问题 Bash Shell:

echo "This is some text" | cat dashes - dashes

"dashes" 是一个包含文本行的文件: "--------------------------------"

据我了解,左侧命令的粗壮流成为右侧命令的标准输入流。我期望打印的是:

This is some text
---------------------------------

但是实际打印出来的是这样的:

---------------------------------
This is some text
---------------------------------

所以我有两个问题:

  1. 当回声通过管道进入猫时发生了什么,以产生给定的输出?

  2. 命令末尾的“-破折号”是如何工作的?

这是意料之中的,因为 2 个文件名之间的 - 意味着打印来自 stdin 的所有数据。举个例子:

date | cat dashes - dashes
---------------------------------
Fri May 29 05:49:05 EDT 2015
---------------------------------