普通に使う
./aaa.sh 2>&1 | tee -a log
しかし、より簡単に見える新しいコマンドを見つけました。
./aaa.sh &> log
それでは、2番目のケースでは何を放棄する必要がありますか?
ベストアンサー1
リンゴとオレンジ。しかし、まず...
2>&1
vsに関する限り、両方とも&>
指揮者として機能します。標準エラー同じ場所に標準出力指示を受けています。
ただし、2番目のものはPOSIXと互換性がなく、それを使用するスクリプトはそれをサポートするシェルでのみ機能するため、移植性を放棄します。
Bashのマニュアルページに記載されているように、「意味は同じ」です。
標準出力と標準エラーをリダイレクトするには、2つの形式があります。
&>word and >&word
2つの形式のうち、最初の形式が好ましい。これは意味上次のとおりです。
>word 2>&1
2番目の形式を使用すると、単語は数字または-に拡張できません。その場合、互換性の理由から他のリダイレクト演算子が適用されます(下記のファイル記述子のコピーを参照)。
しかし、やるべきことがもっとあります。また、tee
最初のバージョンにアドインを追加するコマンドを使用しました。それはかかるだろう標準入力入力して2つの異なる場所に移動します。標準出力(このコマンドを対話的に実行する場合は通常画面/端末)とデータを含む指定されたファイル追加それに(-a
上書きせずに追加すると言う)。
これを組み合わせた2番目のバージョンと比較してみてください。標準出力そして標準エラーファイルが上書きされ、log
画面/ターミナルに表示されません。
結論:最初に述べたように、実際には2つの異なるコマンドですが、同等性の概念を拡張すると、一般的に言えば最初のバージョンは、携帯性に優れていたので優れていた。そしてaaa.sh
ファイルに保存されていても出力を表示できます。もちろん、見たくない場合や古いファイルの内容を削除したい場合は、それは別の問題です。リンゴとオレンジ。