このリンクを引用して、「ls
を解析しないでください」という回答を一貫して見ています。 !」 これはいくつかの理由で私を悩ませます:
-
そのリンクの情報はほとんど疑問の余地なく大々的に受け入れられているようですが、私はカジュアルな読書で少なくともいくつかの誤りを見つけることができます。
-
また、そのリンクに記載されている問題が解決策を見つけたいという欲求を引き起こしていないようにも見えます。
最初の段落から:
…
[ls]
に尋ねるとき ファイルのリストの場合、
大きな問題があります。Unixでは、
ファイル名に、空白、改行、コンマ、パイプ記号など、ほとんどすべての文字を使用できます。
NULを除いて、区切り文字として使用しようとすることはありません。 …ls
ファイル名を改行で区切ります。名前に改行が含まれるファイルができるまでは、これで問題ありません。
そして、私は
ls
の実装を知らないので これにより、
ファイル名を改行ではなくNUL文字で終了できるため、
ファイル名のリストをls
で安全に取得できなくなります。 。
バマー、そうですか? これまで 改行を含む可能性のあるデータの改行で終了するリストされたデータセットを処理できますか?ええと、このウェブサイトで質問に答える人たちが日常的にこのようなことをしていなかったら、私たちは何か問題を抱えていると思うかもしれません。
真実は、しかし、ほとんどのls
実装は実際には、出力を解析するための非常に単純なAPIを提供します。私たちは皆、気付かないうちにそれをずっと行ってきました。ファイル名をnullで終了できるだけでなく、nullまたはその他の任意の文字列で開始することもできます。さらに、これらの任意の文字列をファイルタイプごとに割り当てることができます。 。考慮してください:
LS_COLORS ='lc =
Linux