为什么我可以使用 `>` 写入 /dev/ttys010 但不能使用 `|`

为什么我可以使用 `>` 写入 /dev/ttys010 但不能使用 `|`

我正在尝试尝试并了解 ttys。在一个终端仿真器窗口中,tty 的输出给了我

$ tty
/dev/ttys010

所以我想如果我写入此设备,终端窗口将显示输出。在第二个窗口中,当我运行

$ echo "test" > /dev/ttys010

第一个窗口按预期显示了单词“test”。但是,当我运行

$ echo "test" | /dev/ttys010

我在第一个窗口中没有得到任何输出。这是为什么?我认为这是因为 | 将 stdout 重定向到程序,而 > 将输出重定向到文件。

答案1

你可以使用管道写入文件。以下是两种替代方案

echo "test" | tee /dev/ttys010
echo "test" | cat > /dev/ttys010

正如上面评论中的答案所解释的那样,管道将一个程序的标准输出馈送到另一个程序的标准输入,并且/dev/ttys010是一个设备文件,而不是程序,通常不是您想要运行的东西。

相关内容