&>
エラーとデータ処理のガイドラインを読みました。
$ls -al test test2 test3 badtest &> test7
$ cat test7
ls: cannot access 'test': No such file or directory
ls: cannot access 'badtest': No such file or directory
-rw-r--r-- 1 me staff 78 Oct 28 19:07 test2
-rw-r--r-- 1 me staff 0 Oct 28 19:03 test3
それにもかかわらず確認してみると廃止予定のフレーズ [Bash Hackers Wiki]
それはお勧めします2>&1
$ ls -al test test2 test3 badtest > test7 2>&1
$ cat test7
ls: cannot access 'test': No such file or directory
ls: cannot access 'badtest': No such file or directory
-rw-r--r-- 1 me staff 78 Oct 28 19:07 test2
-rw-r--r-- 1 me staff 0 Oct 28 19:03 test3
どのパターンに従うべきですか?
答え1
それはあなた次第です。
シェルは とbash
を等しく理解し、電子構文を後者作成のための近道として使用できます。他のシェルでは構文エラーまたはエラーが発生する可能性があります。&>file
>file 2>&1
&>
もしあなたならただbash
(たとえばスクリプトの代わりに)スクリプトを作成するには、/bin/sh
必ずを使用してください&>
。しかし、書きたいか必要な場合持ち運べるスクリプト(同様のシェルで実行する必要があるスクリプトや他のシェルで実行できるスクリプト)/bin/sh
は避けるべきことの1つです。sh
bash
ksh
zsh
dash
&>
すべてのsh
類似シェルの実装POSIX規格構文と構文の観点からは、他のbash
シェルも配列や正規表現のマッチングなどの拡張などの構文上の利便性を提供し、一部のシェルは&>
実装方法とはまったく異なる方法でPOSIX標準を拡張できます。bash
関連:
bash
移植性に関するこのサイトの他の質問(DuckDuckGo検索リンク)。