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: みんな集めてみたいなら確認してみてください。
- スクリプト(1)スクリプトで再生(SSHクライアントから実行ログをキャプチャしますか?またはスクリプトシェル録音再生- FAQのようです)
- これPROMPT_COMMAND変数これにより、プロンプト表示の副作用としてコンテンツをstdoutとして印刷できます。
set -o xtrace
(別名set -x
などbash -x
)一般ロギング用氏名