「大文字と小文字の区別は、LinuxオペレーティングシステムではなくLinuxファイルシステムの機能です」とはどういう意味ですか?

「大文字と小文字の区別は、LinuxオペレーティングシステムではなくLinuxファイルシステムの機能です」とはどういう意味ですか?

次の文を読みました。

大文字と小文字の区別は、LinuxオペレーティングシステムではなくLinuxファイルシステムの機能です。

この文を使用してLinuxコンピュータを使用しているがWindowsファイルシステムでフォーマットされたデバイスを使用している場合、大文字と小文字の区別は問題にならないと推測されます。

これを確認するために、以下を試しました。

$ ~/Documents: mkdir Test temp

$ ~/Documents: touch Test/a.txt temp/b.txt

$ ~/Documents: ls te*
b.txt

tempLinuxファイルシステムを使用しているため、予想されるディレクトリ内のファイルのみを一覧表示します。

Windowsファイルシステム(注:WSL2を使用しています)に移動すると、まだ同じ結果が出ますが、大文字と小文字の区別を無視し、両方のディレクトリにファイルが一覧表示されることが予想されます。

$ /mnt/d: mkdir Test temp

$ /mnt/d: touch Test/a.txt temp/b.txt

$ /mnt/d: ls te*
b.txt

私はbashとzshの両方を試してみました。

ある意味ではbash(またはzsh)に関連しているようです。なぜなら、bashは大文字と小文字を区別しないファイルシステムを使用しても大文字と小文字を区別することを読んだからです。

テストはPowershellのため、ファイルシステムが実際に大文字と小文字を区別しないことを意味します。

ベストアンサー1

ここで実行しています:

ls te*

機能の1つを使用してくださいシェルと言うワイルドカードまたはファイル名の生成(POSIXのパス名拡張子)は、LinuxシステムまたはLinuxで使用されるファイルシステムのパス名ではありません。

te*延長するシェルを通してこのパターンに一致するファイルのリストに移動します。

これを行うには、シェルはシステムの現在のディレクトリにあるエントリのリストを要求し(通常はシステム固有のreaddir()システムコール(Linuxの場合)を使用して、以下に説明するCライブラリの関数を使用してgetdents())各名前を比較します。パターンとして。

大文字と小文字を区別せずに一致するようにシェルを構成するか( .最初に報告されているように)拡張glob演算子のnocaseglobzshまたはbashのオプションを参照)、glob演算子を使用して大文字と小文字を区別しない限り(パス名解決はあるいは、デフォルトのファイルシステムは大文字と小文字を区別しないか、NTFSと同様に設定できます。(#i)zshte*readdir()te

おすすめ記事