存在するこのスレッドstdout
そして他のスレッドでは、リダイレクトとstderr
ファイルに対する次のコマンドを見ました。
それらはすべて同等ですか?それらの間にどのような違いがありますか?
command1 >> logfile 2>&1
command &> logfile
command >& logfile
ベストアンサー1
ここでタグ付けしたので、zsh
3つのリダイレクトがすべてまったく同じように機能することをお知らせします。 2つの重複した投稿(コメント内の投稿と投稿内の投稿)を読み取ったように、両方とも「ログファイル」ファイルにリダイレクトされstderr
ますstdout
(つまり、ログファイルには出力とエラーが含まれます)。 )。
ただし、その動作は現在使用しているシェルによって大きく異なります。
bash
リダイレクトする3つの方法はすべて同じ方法でうまく機能します。zsh
しかし:
>&
またはのみ適用されますcsh
。tcsh
[soum@server ~]$ ./test.sh > logfile 2>&1
Ambiguous output redirect.
[soum@server ~]$ ./test.sh &> logfile
Invalid null command.
[soum@server ~]$ ./test.sh >& logfile
[soum@server ~]$ echo $SHELL
/bin/tcsh
[soum@server ~]$
ksh
2>&1
作品でのみ。
$ ./test.sh >& logfile
-ksh: logfile: bad file unit number
$ ./test.sh &> logfile
[1] 23039
$ 1 2 3 4 5 6 logfile test.sh
ls: cannot access ttr: No such file or directory
[1] + Done(2) ./test.sh &> logfile
嫌いksh
。>&
エラーが発生しましたが、コマンド&>
の一部がバックグラウンドで実行され、ログファイルが消去されました(空でない場合)。