私が読んでいる内容はls 解析のトラップ与えられた例は、for / whileループlsを使用することです。記事のタイトルに「ls 構文解析」と記載されています。これは、lsの出力をawkや他のプログラムにパイプすることも同様に悪いという意味ですか?
ls /my/path/ | awk '{print $NF}'
lsの出力を別のプログラムにパイプするときにglobを繰り返す方が良いですか?
for p in /my/path/*; do
echo "$p" | awk '{print $NF}'
done
私の考えでは、lsが改行などを出力できるので、lsを他のプログラムに直接パイプするのも「悪い習慣」ですが、これに関する情報はあまり見られませんでした。
答え1
globを繰り返すことは出力をパイプするよりも安全ですが、globの出力もあなたがすることと同じくらい危険であることに注意してls
ください。ls
あなたがシステムの唯一のユーザーであり、ファイルの命名に精通している場合、パイプはls
大きな問題ではありません。この記事で述べたように、これらの問題は、ファイル名に奇妙な文字(改行、パイプなど)を追加し始めた場合にのみ発生します。私は、多くの人が共有するシステムや、いくつかのプログラムによってランダムに生成されたファイルを含むシステムを使用するときにセキュリティパイプにのみ興味があります。パーソナルコンピュータで一般的に使用するには、ループを作成するよりも合理的なファイル名を指定する方が簡単です。