stderr
リダイレクトしようとしていますが、ここに基本的な内容がありませんstdout
。pipe
パイプのコマンドと出力:
$ apt-cache show contractor
N: Can't select versions from package 'contractor' as it is purely virtual
N: No packages found
Grepは機能しません。次に出力する必要がありますstderr
。
$ apt-cache show contractor |grep virtual
stderr
いいですね。次にリダイレクトしますstdout
。
$ apt-cache show contractor 2>&1 |grep virtual
いいえ、動作しません。なぜですか?
コマンドが使用するファイル記述子を確認してください。
$ apt-cache show contractor 1>t ;cat t
$ apt-cache show contractor 2>t ;cat t
N: Can't select versions from package 'contractor' as it is purely virtual
N: No packages found
使用していることを確認してくださいstderr
。
リダイレクトの順序に関連していますか?
$ apt-cache show contractor |cat 2>&1
いいえ
$ apt-cache show contractor 2>&1 |cat 2>&1
いいえ
それstderr
までリダイレクトする方法は何ですか?stdout
pipe
答え1
apt-cache
これは、標準出力がttyでない場合は「静か」になり、行を印刷しないためです。
「Quietness」を0に設定することで、この決定を上書きできます。
$ apt-cache -q=0 show contractor 2>&1 | grep virtual
N: Can't select versions from package 'contractor' as it is purely virtual