Linux は大文字と小文字を区別すると同時に区別しないので、いつも不便ですか?

Linux は大文字と小文字を区別すると同時に区別しないので、いつも不便ですか?

私は Ubuntu 10 を使用していますが、大文字と小文字が区別されるのは不便な場合 (ターミナルでタブを使用してファイル パスを自動補完する場合など) であること、また、MV コマンドと CP コマンドを使用するときは大文字と小文字が区別されない (大文字と小文字が異なるファイル名を複製しようとする場合も不便) ことがすぐにわかりました。

本質的には、このコマンドが機能する必要があるのですが、機能しません。

cp ./filename.txt ./FileName.txt

結局こうなりますfilename.txt:

ここに画像の説明を入力してください

同じディレクトリ内で、大文字と小文字は異なるが同じ名前の同じファイルを取得するにはどうすればよいでしょうか?

編集: 以下の Maerics のコメントにより、私は実際に大文字と小文字を区別しない NTFS を実行している Windows 共有ドライブで開発していることを思い出すことができました。これが、CP と MV がエラーを生成しないにもかかわらず、ファイルがコピーされない (または、コピーされる可能性の方が高いが、Windows が既存のファイルを置き換える) 理由です。

答え1

NTFS 1と VFAT は大文字と小文字を区別しません。大文字と小文字が保持されるだけです。つまり、 という名前のファイルを作成すると、ファイル システムは大文字と小文字が混在した名前を保持しますが、 、、 のFileName.txtように、同じ文字の大文字と小文字の組み合わせを使用してファイルにアクセスできます。つまり、大文字と小文字のみが異なる同じスペルの 2 つのファイルを同じディレクトリ内に置くことはできません。FILENAME.TXTfilename.txtfileNAME.txt

SMB エクスポート ファイル システムは、Windows クライアントを混乱させないようにこの動作を実装する必要があります。

ZFS は、プロパティを使用してそのように動作するように構成できますcasesensitivity=mixed

1 技術的には、NTFS は大文字と小文字を区別しますが、このタイプのファイル システムをマウントする OS は、ほとんどの場合、この基本機能を非表示にして大文字と小文字のみを保持するように構成されています。ただし、Windows では、このレジスタ キーを変更することで大文字と小文字の区別を有効にすることができ、Linux では、およびマウント オプションHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitiveに応じてさまざまな動作でこれらのファイル システムをマウントできます。ignore_casewindows_names

答え2

次の行を追加することで、bash で大文字と小文字を区別しないファイル名補完を有効にすることができます$HOME/.inputrc

set completion-ignore-case On

ファイル名について: これはファイル システムによって異なります。Linux ファイル システムでは問題はありません。他のファイル システムでは、マウント コマンドのオプションを使用して動作を制御できます。mount(8)マウントに使用できるオプションの詳細については、マニュアル ページを参照してください。

答え3

これはファイルシステムの特性ですか、それとも何か他のものですか?

pa-ubuntu-11388$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.3 LTS
Release:        10.04
Codename:       lucid
pa-ubuntu-11388$ ls -l
pa-ubuntu-11388$ touch filename.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt
pa-ubuntu-11388$ cp ./filename.txt ./FileName.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 FileName.txt
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt

私にとっては問題なく動作します。

答え4

Ubuntu は部分的に大文字と小文字を区別しません。常に大文字と小文字を区別します。filename.txtと はFilename.txt2 つの異なるファイルであり、同じディレクトリに配置できます。したがって、次のコマンドを実行します。

cp ./filename.txt ./FileName.txt

同じディレクトリ内で問題なく動作します。

関連情報