回答:
2>リダイレクトは、cshまたはtcshでは機能しません。
スタイルリダイレクトchsh
を使用するには、コマンドを使用してシェルを/ bin / shまたは/ usr / local / bin / bashに2>
変更します。注:ルートのシェルを/ usr / local / bin / bashに変更しないでください
cshとtcshは標準出力とエラーを別々にリダイレクトすることはできませんが>&
、結合された出力をファイルにリダイレクトします。
pkg_add
はFreeBSDで実行しているので、これはrootユーザー用であると想定しています(/ bin / cshがFreeBSDのrootのデフォルトです)。この場合、シェルを/ usr / local / bin / bashに変更しないでください。/ bin / shは受け入れ可能です。rootとしてログインした後、別のシェルに切り替えることもできます。
あなたが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
編集:これが機能する理由は、()のアクションが最初に発生するためです。Ergo、STDOUTをリダイレクトした場合、()の外では使用できなくなります。これにより、STDERRだけが残り、必要に応じてリダイレクトできます。
私はCshでそれを行う方法を知っていますが、2つのシェルを使用しています:
csh -c 'SOME_COMMAND 1>/dev/null' |& tee file.txt
このような方法により、stdoutを使用せずにstderr のみをfile.txt にリダイレクトできます。
sh
。