ファイル名について独自のフレームワークに依存する開発プロジェクトを進めていたある日、このような考えをしました。フレームワーク(ここでは関係ありません)は、大文字の優先順位でファイル名を表示したいと思います。これが考えられました。
ファイルシステムは、extFATやHFS +(特に大文字と小文字を区別しない)などの大文字と小文字を区別しないファイルシステムから同じファイルへのアクセスをどのように提供しますか?両方ファイル名の大文字と小文字のバージョン。
たとえば、
$ cd ~/Documents
$ pwd
/home/derp/Documents
$ cd ../documents
$ pwd
/home/derp/documents
$ cd ../docuMents
$ pwd
/home/derp/docuMents
$ cd ../DOCUMENTS
$ pwd
/home/derp/DOCUMENTS
$ cd ../documentS
$ pwd
/home/derp/documentS
これらのコマンドはすべて同じディレクトリで解決されます。この動作、特にpwd
この場合、関数の出力は、bash
私が見たいと思うものを示していますか?
他の例:
$ ls ~/Documents
Derp.txt another.txt whatThe.WORLD
ここで、ファイルシステムは、ユーザーまたはプログラムが作成した元のファイル名の場合を報告します。
ファイルシステムスタックのどの時点で、正しい大文字と小文字のASCII文字の組み合わせでアクセスできるように、作成時に人間が読み取ることができるファイル名(大文字と小文字など)は保存されますか?これはどこかにある正規表現のトリックですか、それとも別のことが進んでいますか?
編集:私が気になった動作は次のとおりです。大尿を保存するより多くの研究の終わりに大文字と小文字を区別しないファイルシステム...
ベストアンサー1
大文字と小文字を区別しないファイルシステムは、単にファイルシステムが「AがBと同じファイル/ディレクトリを参照しますか?」比較することを意味します。違いはファイルシステムによって異なります。 ASCIIを超えては明確ではありません。大文字と小文字を区別するファイルシステムは、これらの違いを無視しません。
大文字と小文字の保存ファイルシステムは、指定されたファイル名を保存します。大文字と小文字を保持しないファイルシステムは通常、保存する前にすべての文字を大文字に変換します(理論的には小文字やRaNsOm Note、大文字と小文字などを使用できますが、私が知る限り、実際の世界のすべての文字は大文字で表します)
これら2つのプロパティを任意の組み合わせに組み合わせることができます。大文字と小文字を保持しない大文字と小文字を区別するファイルシステムが見つかるかどうかはわかりませんが、確実に作成できます。しかし、他のすべての組み合わせは、実際のシステムに存在または存在します。
したがって、大文字と小文字を区別しない大文字と小文字を区別しないファイルシステム(現在、大文字と小文字を区別しない最も一般的なファイルシステムタイプ)は、ファイル名を作成したり、最後に名前を変更した場合に関係なく、ファイル名を保存して返します。 。存在、開く、削除など)大文字と小文字の違いは無視されます。
Unixシステムで大文字と小文字を区別しないファイルシステムを使用すると、Unixは伝統的に大文字と小文字を区別するファイルシステムを使用しているため、同じファイルになるとは思わないため、Document1
さまざまなユーティリティが奇妙に動作します。document1
このpwd
場合、デフォルトでは、ディレクトリへのアクセスに実際に使用するパスのみが出力されることがわかります。したがって、そこに到達すると出力に使用されますcd DirName
。DirName
を介してそこに到達すると、出力でこれを見ることDiRnAmE
ができます。DiRnAmE
Bashは、環境変数から現在のディレクトリにどのように到達したかを追跡することによってこれを行います$PWD
。これは主にシンボリックリンクに使用されます(シンボリックリンクに移動すると、実際には現在のディレクトリパスの一部でなくてもシンボリックリンクcd
にシンボリックリンクが表示されます)。pwd
ただし、大文字と小文字を区別しないファイルシステムで見られるやや奇妙な動作もあります。私はこれがpwd -P
ディスクに格納されているケースを使用してディレクトリ名を提供すると思いますが、まだテストしていません。