tcshにリダイレクトの問題があります。
次のコマンドを検討してくださいvi --version
。vi --xxx
我々は、これがvi
この--version
オプションをサポートするマシンにあると仮定します。このオプションは--xxx
何の効果もありませんので、vim
何かを表示する必要がありますstderr
。
これらの推論に基づいて、2> /dev/null
これら2つのコマンドと組み合わせて使用すると、有効な場合は出力を提供し、誤った場合は出力を提供しないでください。
それからはいbash、zsh、ksh、dashで見たものです。
$ vi --xxx 2> /dev/null
$ vi --version 2> /dev/null
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 20 2014 16:09:17)
...
しかし、tcshでこれを試してみると私に提供されます。出力なし存在する両方ケース。
$ vi --xxx 2> /dev/null
$ vi --version 2> /dev/null
(there is no output here)
ここで何が起こっているのでしょうか?私がstderr
間違って方向を変えているのだろうか?
出力は次のとおりですtcsh --version
。
tcsh 6.18.01 (Astron) 2012-02-14 (i686-intel-linux) options wide,nls,dl,al,kan,rh,nd,color,filec
ベストアンサー1
これらの不一致は、実際に理由リストの最初の理由です。有害とみなされるcshプログラミング。
それともstderrを捨ててstdoutを維持したい場合はどうすればよいですか?操作方法はとても簡単ですか?
cmd 2>/dev/null
Bourne シェルで作業します。 cshでは、次のような厳しい試みしかできません。
(cmd > /dev/tty) >& /dev/null
しかし、誰がstdoutが私のttyだと言ったのですか?だからこれは間違っています。この簡単な操作完了できませんcshから。