&>>&と2>&1の違いリダイレクト

&>>&と2>&1の違いリダイレクト

存在するこのスレッドstdoutそして他のスレッドでは、リダイレクトとstderrファイルに対する次のコマンドを見ました。

それらはすべて同等ですか?それらの間にどのような違いがありますか?

command1 >> logfile 2>&1
command &> logfile
command >& logfile

ベストアンサー1

ここでタグ付けしたので、zsh3つのリダイレクトがすべてまったく同じように機能することをお知らせします。 2つの重複した投稿(コメント内の投稿と投稿内の投稿)を読み取ったように、両方とも「ログファイル」ファイルにリダイレクトされstderrますstdout(つまり、ログファイルには出力とエラーが含まれます)。 )。

ただし、その動作は現在使用しているシェルによって大きく異なります。

bashリダイレクトする3つの方法はすべて同じ方法でうまく機能します。zsh

しかし:

>&またはのみ適用されますcshtcsh

[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 ~]$

ksh2>&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>&エラーが発生しましたが、コマンド&>の一部がバックグラウンドで実行され、ログファイルが消去されました(空でない場合)。

おすすめ記事