Linux:如何正确地将文本通过管道传输到程序中?

Posted

技术标签:

【中文标题】Linux:如何正确地将文本通过管道传输到程序中?【英文标题】:Linux: How would I pipe text into a program properly? 【发布时间】:2011-01-14 00:48:09 【问题描述】:

我看过但找不到任何东西。例如,我使用的一个 TTS 程序可以让您执行以下操作:

~#festival -tts | echo "I am to be spoken"

这真的很好,但是对于我使用的程序,例如 hexdump,我不知道如何将文本输入其中。我真的可以使用其中的一些东西,我尝试过(但失败)的一些例子是这样的:

~#gtextpad < dmesg
      //(how do I put the contents into the text pad for display? not just into a file)
~#hexdump | echo "I am to be put into hexdump"
      //(How do I get hexdump to read the echo? It normally reads a file such as foo.txt..)

【问题讨论】:

【参考方案1】:

来自hexdump(1) 手册页:

hexdump 实用程序是一个过滤器,它以用户指定的格式显示指定的文件或标准输入(如果未指定文件)。

所以:

echo "I am to be put into hexdump" | hexdump

【讨论】:

【参考方案2】:

管道中的数据流(由管道符号分隔的一系列命令)从左到右流动。因此,下面 command1 的输出会转到 command2 的输入,以此类推。

command1 |
command2 |
command3 arg1 arg2 arg3 |
sort |
more

因此,要将“echo”的输出转换为“hexdump”,请使用:

echo "I am to be dumped" | hexdump

我看不出你展示的“节日”命令是如何工作的。 shell 做了足够多的管道工作,没有做出无根据的假设和做很多诡计,然后仍然依赖内核中的调度决策来让事情“正确”,我不明白它是如何工作的。

【讨论】:

【参考方案3】:

这里有一些将文本传递到 hexdump 的方法

标准输入:

echo "text" | hexdump

这里是文档

hexdump <<EOF
text
EOF

处理整个文件

hexdump file

【讨论】:

啊。反过来说,现在我可以做一些我想做的有用的自动化事情了。【参考方案4】:

在 bash 上,你也可以这样做

hexdump <<< "Pipe this text into hexdump"

【讨论】:

关于&lt;&lt;&lt;的解释请看这个问题:unix.stackexchange.com/questions/80362/what-does-mean

以上是关于Linux:如何正确地将文本通过管道传输到程序中?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform Grafana 提供程序动态地将仪表板放在正确的文件夹中

如何使用 Perl 将输入通过管道传输到 Java 应用程序?

如何在 docker run 上将数据通过管道传输到 dockerified 应用程序?

无法从通过管道 C++ 重定向的程序中获得正确的输出(Windows)

如何将 find 命令返回的文件列表通过管道传输到 cat 以查看所有文件

读取管道输入