Bashはどのストリームにプロンプ​​トを書きますか?

Bashはどのストリームにプロンプ​​トを書きますか?

bash(プロンプト、ユーザー入力、結果)のすべての出力をファイルにリダイレクトしようとしています。

例:

/bin/bash > file.txt 2>&1

私はこれがうまくいくと思いましたが、プロンプトを得ませんでした。誰かが私が間違っていることを教えてもらえますか?

ベストアンサー1

Bashはインタラクティブモードでのみプロンプトを出力します。つまり、通常はターミナル(Linuxの場合/ dev / tty)に出力されます。 /dev/stdoutでも/dev/stdinでもありません:)

今はわかりませんが、完全な機能を備えたttyが利用できない場合、bashは制限された対話モードを許可すると想像できます。それから私は予想される標準出力に書き込むメッセージを表示します。まだテストしていません。

優れた概念証明:

(for a in some set of words; do echo $a > /dev/tty; done) 2>&1 > /dev/null

リダイレクトがないかのように1..10のみ出力されます。プロンプトと同様に、出力を端末に直接送信します(ターミナルがないと失敗します)。

Tip: みんな集めてみたいなら確認してみてください。

おすすめ記事