パスワードを忘れた? アカウント作成
15800769 story
Windows

大文字小文字を区別するファイルシステムと区別しないファイルシステム、どっちがいい? 204

ストーリー by headless
区別 部門より
Linux の NTFS3 ドライバーで大文字と小文字を区別しないマウントオプション「nocase」追加が提案され、Phoronix のフォーラムでは大文字と小文字を区別するファイルシステムの是非について議論が盛り上がっている (Phoronix の記事)。

Windows も「まともな」OS のように大文字小文字を区別すべきだといった意見や、大文字と小文字を区別しないファイルシステム上のファイルを Linux のツールで操作したらどうなるのか心配する意見も見られるが、Linux のネイティブファイルシステムでも ext4 や f2fs が大文字小文字を区別しない機能をサポートしている。逆に Windows 10 バージョン 1803 以降では NTFS にディレクトリ単位でファイル名の大文字と小文字を区別するフラグが追加されており、fsutil コマンドを使用して有効化が可能だ。

人間は大文字と小文字の違いだけであれば同じ名前だと認識するため、平均的なユーザーには大文字と小文字を区別するファイルシステムを理解しにくい、実用的に大文字と小文字の組み合わせのみが異なる同名のファイルを同じフォルダーに格納できることが役に立つ場面は少ない、といった意見も見られる。スラドの皆さんはどう思われるだろうか。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2022年09月25日 20時12分 (#4332466)

    区別してたのをしなくしたら、区別する前提でのtar.gzファイルを展開した時とか、
    ファイル群をコピー・移動したりすると衝突しておかしくなっちゃうじゃないですか。

    • by Anonymous Coward on 2022年09月25日 20時37分 (#4332475)

      *nixルータのファームウェアをWindowsで展開しようとしたときに衝突して面倒だったな

      親コメント
    • by Anonymous Coward on 2022年09月25日 21時04分 (#4332487)

      若かりし頃データベースのテーブル作るときに全部小文字でタイプして作業したとき、アプリケーションがWindowsでは動くのにLinuxでは動かないという現象に遭遇して調べたらSQLが全部大文字だったのでLinuxではテーブルが見つからない扱いだった。

      親コメント
    • by Anonymous Coward

      LinuxとWindowsの両方でクロス開発とか珍しくないしUNIX系のMAC OSすらも区別しないし
      そもそも同一階層に大文字小文字区別前提でファイルを作るとか普通の感覚だと避けるでしょ。
      人間には大文字小文字をいちいち区別するのはメンドクサイから。

      • by Anonymous Coward on 2022年09月25日 20時48分 (#4332480)

        時には他人の作ったファイルを同一階層に取り込むこともあるし、プログラムが自動でファイルを吐き出すこともある
        って考えると「普通の感覚」をアテにしちゃあマズいんじゃないですかね

        親コメント
        • by Anonymous Coward

          MacやWindowsとクロス開発しないで大文字小文字区別する設定のままやってれば問題ないよ。
          クロスした時点で破綻するからそんな案件には近寄りたくないけどな。

      • by Anonymous Coward

        今はAndroidとかで素人でも大文字小文字区別環境に触れることは多く、Windowsと同じつもりでファイル名の大文字小文字を変更して保存したら別ファイルになって知らぬ間に容量を圧迫されるなどの被害を被る可能性がある
        混乱を来たす大文字小文字同一視ファイルシステムは滅ぼし尽くされるべき
        素人はコマンドラインや設定ファイルなどで読み込むファイル名を手入力で指定することなんてそう多くないから、大文字小文字が違っていてファイルが読み込まれずに戸惑う心配なんて要らない

  • 他の言語は知らないが、日本語だと「ぁぃぅぇぉ」とか、空白文字にも全角とかある。
    これらがすべて大文字、もしくは半角と全角の空白文字が同一視されるなら、英語圏の大文字ファイルシステムでも構わない。

    日本人なら、(というか多言語を処理するなら) すべて大文字という文化に違和感を感じるんじゃないか?

    初心者が作ったコードを添削するとき、無駄になる時間が少なくないんだよな。

  • X68000のOS、Human68kは、MS-DOS互換的に、ファイルシステムとしてFATを採用してたんですが、
    DOSの8+3形式を独自に拡張して 小文字を利用可能としてさらに18+3のファイル名表現ができるようになっていました。

    ところが、ファイル名の識別としてはDOSと同じ8+3だけで、
    9文字目~18文字目だけが異なるものは同じファイル扱いで、大文字小文字も区別なし。

    一件便利そうに見えて、GNUなどUNIX系のファイルを持ってきた時の不便さというか罠っぷりから、
    「ファイル名の識別を18+3にする」という常駐プログラム「TwentyOne.x」が登場、
    その便利さから「X68000にとって必須のソフト」扱いレベルで流行ります。

    オプション指定で「大文字小文字も区別する」こともできましたが
    逆に既存の大文字小文字を区別してないプログラムで問題が起こることがあるという癖の強いものでした。だからデフォルトでは区別なし。

    ってことで、X68000でのカオスっぷりを体験した身からすると、現行のシステムで大文字小文字の区別有無を変更するってのは茨の道としか思えないです…

  • by Anonymous Coward on 2022年09月25日 20時08分 (#4332463)

    セキュリティ的には大文字小文字を区別しないと不利なんじゃなかったっけ? 理由はわからん。 何かで見た。

    最初から小文字だけとか大文字だけしか受け付けないとかいう設計にすればよかったんじゃね? そうすればデジタル化!で、英語でも大文字か小文字が廃止されていたかもしれん。 FAXは古い、的ノリで。

    • by Anonymous Coward on 2022年09月25日 20時36分 (#4332474)

      インジェクションでcmd.exeを置き換えてcmd.exe の自動実行をすげ替えるとき、区別だと呼び出し cmd.exe に対して CmD.eXE とかは反応しないけど、Windowsだとしちゃうね。んでインジェクション検知の正規表現マッチングで grep -i みたいにしないといけないし、Perlなら[A-Z][a-z] しないといけない。パターンがザルだとくぐり抜けられちゃう。多分そういうことだと思う

      親コメント
    • by Anonymous Coward

      物理ファイルにアクセスできる可能性が増えるからじゃね。
      AAAAAAAA.EXEとaaaaaaaa.exeが区別されないなら、1tryで2patternのattackしたのと等価になる。

      >最初から小文字だけとか大文字だけしか受け付けないとかいう設計にすればよかったんじゃね?
      MS-DOSは小文字を受け付けませんでした。小文字で指定してもファイルは大文字で作成される。

      • by Anonymous Coward on 2022年09月25日 22時11分 (#4332522)

        仕事を持って帰って、家のX68kで作業してうっかり小文字で保存したまま会社に持って行って、
        ファイルにアクセスできなかった時はどうしようかと思いました。

        幸いにもFDで「名前の変更」→即確定で大文字に出来たので事なきを得ましたが。
        FILMTNでは駄目でした。

        親コメント
      • by Anonymous Coward

        >MS-DOSは小文字を受け付けませんでした。小文字で指定してもファイルは大文字で作成される。 なんとなく、システムファイルは小文字、ユーザーファイルは大文字にすれば、面白いと思った。そうすれば、ユーザーがシステム予約で作

        • iノード番号「呼んだ?」
          親コメント
        • by Anonymous Coward

          コンピュータ側はIDだろうと何でもいいけど人間が番号だけで理解できるとは思えないのですが?

          • by Anonymous Coward

            別に番号だけを使う必要はない。 ファイルを一意に特定するのに、ファイル名を使う必要はない、と思っているだけ。 人間向けには名前を別に付ければいい。でも、それをIDとしては使わない。

            • by Anonymous Coward

              MS-DOS時代のPC-98向けOASYS互換ワープロがそんな作りだった。
              ファイル名に不自由しない現代では意味があるとは思えない。

              • ファイル名はなんか256バイトくらいの手打ち文字列なので、そんなもんをキーにするのはおかしいという発想には同意できるものもないでしょうか。はしご高とかファイル名がエスケープシーケンスみたいなエッジケースもありますし。

                親コメント
  • by Anonymous Coward on 2022年09月25日 20時10分 (#4332465)

    小文字とかいうややこしいものを発明した奴、出てこい!

  • by Anonymous Coward on 2022年09月25日 20時47分 (#4332478)

    漢字だっていろいろ字体があるし、ラテン文字だってそうだろう。 中途半端はすべきではないから、全部別が良い。

    • by Anonymous Coward

      全角と半角もね。

      ローカライズ関連の機能を変に使ってしまった結果、1.txt(「1」は全角)と一.txtの区別ができないアプリ、とか見たことがある。

    • by Anonymous Coward

      漢字だっていろいろ字体があるし、ラテン文字だってそうだろう。 中途半端はすべきではないから、全部別が良い。

      わたなべ「そのとおり」
      さいとう「そのとおり」
      Anonymous Coward「いやべつに」

  • by Anonymous Coward on 2022年09月25日 20時48分 (#4332481)

    Explorerは区別しないがNTFSは区別しているのかと思っていた。

    • by Anonymous Coward

      区別しているけど、大小の重複は許さないファイルシステム運用だと思ってた。

  • by Anonymous Coward on 2022年09月25日 20時57分 (#4332484)

    表示名とかフォルダ階層とかはアプリケーション層の情報にしろ

  • by Anonymous Coward on 2022年09月25日 21時02分 (#4332486)

    ls でファイルを把握していると、先頭 大文字は先・左に、小文字は後・右にと 離れてリスティングされるのでまったく気にせずにファイル作ってるなぁ。 ただ調べてみたら大文字小文字違いで同じファイル名は自分では ほぼ作ってなかった。

    むしろシステム側(FreeBSD 10.2R)の方に散見される感じ。 /usr/bin/ に CC と cc、Mail と mail とか、 /usr/local/include/X11/bitmaps に stipple と Stipple とか、 /usr/local/lib/perl5/5.20/ に Perl/ と perl/ とか、 /usr/local/share/xpaint/include/ に Xpaint.h と xpaint.h とか。 man page はどちらでも引けるように両方用意してあるとか。(scsi とか)

    名前考えるのが面倒くさいときに 大文字が dir で小文字がその config とかやりそう。

  • by Anonymous Coward on 2022年09月25日 21時35分 (#4332504)

    MSの公式ドキュメントにリンクしろよ無能が

    Modify case sensitivity [microsoft.com]

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...