12

我正在尝试运行一个应用程序(比方说top),因此它将从标准输入文件中读取并从标准输出写入另一个文件。

目前我有

mkfifo stdin.pipe
(tail -f stdin.pipe) | top

它按预期工作,因为我可以然后echo该文件的某些内容和顶部将接收它。但我无法重定向 top 的输出。我怎样才能做到这一点?

编辑:

好的,让我们从头开始。我正在测试这个:

cat test.sh

echo Say something
read something
echo you said $something
4

2 回答 2

44

让我们忘记top,这似乎是一个红鲱鱼。

要将 stdin 或 stdout 映射到文件,可以使用重定向:

some_program < input_file          # Redirects stdin

another_program > output_file      # Redirects stdout

甚至:

yet_another  < input_file > output_file
于 2013-03-28T11:44:31.177 回答
7

有没有办法可以将标准输入和标准输出映射到文件并使用它们来控制 cli 应用程序?

听起来您正在寻找coprocesses,在 4.0 中添加到 Bash。

coproc cat                    # Start cat in background
echo Hello >&${COPROC[1]}     # Say "Hello" to cat
read LINE <&${COPROC[0]}      # Read response
echo $LINE                    # cat replied "Hello"!

在 4.0 之前,您必须使用两个命名管道来实现这一点。

于 2013-03-28T12:49:50.563 回答