我正在尝试运行一个应用程序(让我们说top
),这样它就会从文件读取stdin并从stdout写入另一个文件。
目前我有
mkfifo stdin.pipe
(tail -f stdin.pipe) | top
按预期工作,因为我可以echo
对该文件进行操作,top将接收它。
但是我无法重定向顶部的输出。
我怎样才能做到这一点?
编辑:
好的,我们先刮一下。 我正在测试:
cat test.sh
echo Say something
read something
echo you said $something
答案 0 :(得分:22)
让我们忘记top
,这似乎是一个红色的鲱鱼。
要将stdin或stdout映射到文件,可以使用重定向:
some_program < input_file # Redirects stdin
another_program > output_file # Redirects stdout
甚至:
yet_another < input_file > output_file
答案 1 :(得分:6)
有没有办法将stdin和stdout映射到文件并使用它们来控制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之前,您必须使用两个命名管道才能实现此目的。