繰り返しワイルドカードを使用してlsを別のプログラムにパイプ

繰り返しワイルドカードを使用してlsを別のプログラムにパイプ

私が読んでいる内容は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大きな問題ではありません。この記事で述べたように、これらの問題は、ファイル名に奇妙な文字(改行、パイプなど)を追加し始めた場合にのみ発生します。私は、多くの人が共有するシステムや、いくつかのプログラムによってランダムに生成されたファイルを含むシステムを使用するときにセキュリティパイプにのみ興味があります。パーソナルコンピュータで一般的に使用するには、ループを作成するよりも合理的なファイル名を指定する方が簡単です。

おすすめ記事