Linux中的管道操作员

时间:2015-07-03 09:09:21

标签: linux pipe stdout stdin cat

根据我的理解,Linux中的管道操作符接受一个命令的标准输出,并将其通道化为下一个命令的标准输入。但我遇到了一个异常现象。 我试图在标准输出中获取文件的内容,如下所示。

cat file1

显示内容。让我们说内容是另一个名为file2的文件。 现在我想显示file2

的内容

因此,为了利用管道运算符,我试图执行如下

cat file1 | cat

第一个cat命令应该管道输出(这里" file2")。后续命令中的cat必须从标准输入接受它(此处值为" file2")并打印file2的内容。

但它显示" file2"只代替其内容。

2 个答案:

答案 0 :(得分:1)

你应该做什么:

cat `cat file1`

来自man cat

  

将FILE(或标准输入)连接到标准输出。

换句话说,如果有一个文件名作为参数提供,它会将其内容显示给标准输出,否则它只会重定向到标准输出的标准输入。

在您的情况下,从标准输入读取文件名,它被解释为连接到标准输出的字符串。

反引号用于注入命令的标准输出,即:

cat `cat file1`

相当于

cat file2

将file2内容转储到标准输出。

答案 1 :(得分:1)

您可以使用xargs

cat file1 | xargs cat

XARGS General Commands Manual