~からhttps://unix.stackexchange.com/a/458074/674
使用することを覚えておいてください
--
コマンドに任意のパラメータを渡すとき(または可能であればリダイレクトを使用してください)。だからsort -- "$f1"
またはそのsort < "$f1"
代わりに良いですsort "$f1"
。
最初に使用し--
てリダイレクトするのはなぜですか?
なぜsort < "$f1"
優先順位を置くのですsort -- "$f1"
か?
なぜ sort -- "$f1"
優先順位を置くのですsort "$f1"
か?
ありがとうございます。
ベストアンサー1
sort "$f1"
$f1
次から始まる値-
または次sort
から始まる値は失敗します(たとえば、+
呼び出されるファイルに重大な結果が生じる可能性があります)。-o/etc/passwd
sort -- "$f1"
(--
オプションの終わりを意味します)はほとんどの問題を解決しますが、呼び出されるファイル-
(sort
標準入力として解釈されます)ではまだ失敗します。
sort < "$f1"
そのような問題はありません。
ここではファイルを開くシェルです。これは、ファイルを開くことができない場合に役立つ可能性があるエラーメッセージも表示することを意味します(たとえば、ほとんどのシェルはスクリプトの行番号を表示します)。可能であれば、リダイレクトを使用してファイルを開くと。
そして
sort < "$f1" > out
(sort -- "$f1" > out
逆)"$f1"
開くことができない場合は、out
作成/切り捨ても実行もできませんsort
。
発生する可能性のある混乱を取り除くために(以下を参照)、ファイル自体が検索可能であれば、コマンドをmmap()
ファイルに入れたりlseek()
ファイル内に入れたりすることを防ぎません。sort
唯一の違いは、ファイルが後で別のファイル記述子に存在する可能性のあるコマンドによって開かれるのではなく、ファイル記述子0のシェルによってより早く開くことです。このコマンドは、必要に応じてfd 0を検索またはマッピングできます。cat file | cmd
今回cmd
はstdinがマッピング/照会できないパイプであるという事実とこれを混同しないでください。