GNU/Linux >> Linux の 問題 >  >> Linux

なぜ`ls`(および代わりに何をすべきか)を解析しないのですか?

このリンクを引用して、lsを解析しないでください」という回答を一貫して見ています。 !」 これはいくつかの理由で私を悩ませます:

  1. そのリンクの情報はほとんど疑問の余地なく大々的に受け入れられているようですが、私はカジュアルな読書で少なくともいくつかの誤りを見つけることができます。

  2. また、そのリンクに記載されている問題が解決策を見つけたいという欲求を引き起こしていないようにも見えます。

最初の段落から:

[ls]に尋ねるとき ファイルのリストの場合、
大きな問題があります。Unixでは、
ファイル名に、空白、改行、コンマ、パイプ記号など、ほとんどすべての文字を使用できます。

NULを除いて、区切り文字として使用しようとすることはありません。 …ls ファイル名を改行で区切ります。名前に改行が含まれるファイルができるまでは、これで問題ありません。
そして、私は
lsの実装を知らないので これにより、
ファイル名を改行ではなくNUL文字で終了できるため、
ファイル名のリストをlsで安全に取得できなくなります。 。

バマー、そうですか? これまで 改行を含む可能性のあるデータの改行で終了するリストされたデータセットを処理できますか?ええと、このウェブサイトで質問に答える人たちが日常的にこのようなことをしていなかったら、私たちは何か問題を抱えていると思うかもしれません。

真実は、しかし、ほとんどのls 実装は実際には、出力を解析するための非常に単純なAPIを提供します。私たちは皆、気付かないうちにそれをずっと行ってきました。ファイル名をnullで終了できるだけでなく、nullまたはその他の任意の文字列で開始することもできます。さらに、これらの任意の文字列をファイルタイプごとに割り当てることができます。 。考慮してください:

  LS_COLORS ='lc =
Linux
  1. Linuxサーバーとは何ですか?なぜあなたのビジネスにはLinuxサーバーが必要なのですか?

  2. パスワードハッシュとその必要性

  3. 何が私のプロセスを殺したのか、そしてその理由は?

  1. Bash で eval を避ける必要があるのはなぜですか? 代わりに何を使用する必要がありますか?

  2. dbus デーモンとは何か、vlc がそれを必要とする理由

  3. Gnome Keyring / Seahorse とは何ですか? パスワードを平文で保存するのはなぜですか?

  1. TAMとは何ですか?なぜあなたはTAMになりたいのですか?

  2. Howto:GitとGithubとは何ですか?どのように使用し、なぜ気にする必要がありますか?

  3. Env X =(){:;}; Command’Bashは、なぜそれが安全でないのですか?