なぜlsを*解析*しないのですか(そして代わりに何をすべきか)?
私は一貫して引用の回答を参照このリンクを明確に述べ、「解析はいけませんのls!」これにはいくつかの理由があります。 そのリンクの情報は、ささいな質問なしに大々的に受け入れられているように見えますが、偶然の読書で少なくともいくつかのエラーを見つけることができます。 また、あたかもそのリンクに記載されている問題が解決策を見つけたいという欲求を引き起こしていないかのようです。 最初の段落から: ... [ls]ファイルのリストを要求すると、大きな問題があります。Unixでは、空白、改行、コンマ、パイプ記号など、ほとんどすべての文字をファイル名に使用できます。 NULを除く区切り文字。... lsファイル名を改行で区切ります。これは、名前に改行を含むファイルが作成されるまで問題ありません。そして、ls改行の代わりにNUL文字でファイル名を終了できるようにする実装がわからないため、これを使用してファイル名のリストを安全に取得できなくなりますls。 残念ですよね?どのようにこれまで私たちは、改行は改行が含まれている可能性のあるデータにリストされているデータセットを終了扱うことができますか?まあ、このウェブサイトの質問に答える人々が日常的にこの種のことをしなかったなら、私たちは何らかのトラブルにあったと思うかもしれません。 ただし、ls実際には、ほとんどの実装では、出力を解析するための非常に単純なAPIが実際に提供されており、私たちはみな、気づかずにそれをずっと行ってきました。ファイル名をnullで終了できるだけでなく、nullで開始することも、他の任意の文字列で開始することもできます。さらに、これらの任意の文字列をfile-typeごとに割り当てることができます。考えてください: LS_COLORS='lc=\0:rc=:ec=\0\0\0:fi=:di=:' ls -l --color=always | cat -A total 4$ drwxr-xr-x 1 mikeserv mikeserv 0 Jul 10 01:05 ^@^@^@^@dir^@^@^@/$ -rw-r--r-- 1 mikeserv mikeserv 4 Jul 10 02:18 ^@file1^@^@^@$ -rw-r--r-- 1 mikeserv mikeserv 0 Jul 10 01:08 ^@file2^@^@^@$ -rw-r--r-- 1 mikeserv mikeserv …