12

私はアプリを実行しようとしています(たとえばtop、.

現在、私は持っています

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

これは期待どおりに機能echoします。そのファイルに何かを追加すると、トップがそれを受け取ることができます。しかし、トップの出力をリダイレクトできません。どうすればこれを達成できますか?

編集:

よし、スクラッチしよう。私はこれでテストしています:

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

stdin と stdout をファイルにマップし、それらを使用して cli アプリを制御する方法はありますか?

4.0 で Bash に追加されたcoprocessesを探しているようです。

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 より前では、これを実現するために 2 つの名前付きパイプを使用する必要がありました。

于 2013-03-28T12:49:50.563 に答える