何时使用管道以及何时重定向?

何时使用管道以及何时重定向?

虽然这是基础知识,但我仍然感到疑惑。请考虑以下两个示例。

情况1:

[root@dhcppc0 practice]# cat file1 > wc -l
cat: invalid option -- l
Try `cat --help' for more information.

案例 2:

[root@dhcppc0 practice]# cat file1 | wc -l
7

我想知道,为什么在第一种情况下重定向不起作用?什么时候使用重定向,什么时候使用管道?我使用 Linux 很长时间了,但这些基本的东西仍然让我困惑。

请帮忙。

答案1

重定向操作符用于将命令流式传输stdout到文件(>),或将文件的内容流式传输到stdin命令(<)。

管道运算符( |) 将进程的输出 ( stdout) 传输到下一个进程的stdin

使您的第一个案例起作用的唯一方法是使用临时文件,因此您需要使用两个步骤:

cat file1 > tmpfile
wc -l < tmpfile

答案2

当你想将一个可执行文件的 FD 连接到另一个可执行文件的 FD 时,可以使用管道。当你想将一个可执行文件的 FD 连接到一个文件时,可以使用重定向。

相关内容