コマンドラインの後、I/O リダイレクトのショートカットは機能しません。

コマンドラインの後、I/O リダイレクトのショートカットは機能しません。

私はI / Oリダイレクトに精通しています。&>近道を悟りました2>&1。私もそれがうまくいくと思います>&。私が知らないニュアンスがあるかもしれません。

これを使用するときは、コマンドラインの途中にある必要があります。

ls test.txt missing &> output.txt

ただし、長い形式を使用している場合は、コマンドラインの最後にする必要があります。

ls test.txt missing > output.txt 2>&1

ショートカットを最後に配置しようとするとエラーが発生します。

ls test.txt missing > output.txt &>
-bash: syntax error near unexpected token `newline'

なぜこれですか?長い形式の方法のように、行の終わりではなくインラインで使用する必要があるショートカットの違いは何ですか?

答え1

&>wordはい:

semantically equivalent to

>word 2>&1

それいいえ一人でいるのと同じだ2>&1。リダイレクトと同様出力word(対象)部分が必要です。2>&1実際には他の通信会社で、ターゲットword(ここでは " 1")も必要です。

リダイレクトは順次適用され、複数のリダイレクトが許可されます。コマンドは次のように変更できます。

ls test.txt missing > output.txt &>tmp.txt

&>成果を見るための目的地を提供します。それがあなたが書こうとしていると思うもので、エラーは2番目のファイル名を見ることを期待していましたが、見つかりませんでした。

関連情報