cshでstderrリダイレクトが機能しません

cshでstderrリダイレクトが機能しません

次のコマンドを実行します。

pkg_add emacs-23.4,2.tbz 2> output.log

出力は依然として端末に表示されます。押すと手に入る

pkg_add emacs-23.4,2.tbz 2 > output.log

前にスペースがあります。2

最初はこれを入れませんでした。頑張る

pkg_add emacs-23.4,2.tbz > output.log 2>&1

もう一度押すと追加されたスペース

私にとってなぜこれが起こったのですか?

私はFreeBSDでcshを実行しています。

ベストアンサー1

STDERRを非表示にするのかSTDOUTにリダイレクトしたいのかわかりません。

STDOUTをファイルにリダイレクトするには:

pkg_add emacs-23.4,2.tbz > stdout.log

STDOUTとSTDERRをファイルにリダイレクトするには:

pkg_add emacs-23.4,2.tbz > & stdxxx.log

STDOUTをファイルにリダイレクトしてSTDERRを非表示にするには、次のようにします。

( pkg_add emacs-23.4,2.tbz > stdout.log ) > & /dev/null

STDOUTをコンソールにリダイレクトし、STDERRを非表示にします。

( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & /dev/null

STDOUTをコンソールにリダイレクトし、STDERRをファイルにリダイレクトします。

( pkg_add emacs-23.4,2.tbz > /dev/tty ) > & stderr.log

STDOUTをファイルにリダイレクトし、STDERRをファイルにリダイレクトします。

( pkg_add emacs-23.4,2.tbz > stdout.log ) > & stderr.log

編集:その理由は、()内部の作業が最初に発生するためです。したがって、STDOUT をリダイレクトすると () 外部で使用できなくなります。これによりSTDERRが残り、必要に応じてリダイレクトできます。

おすすめ記事