Linux Baik Huruf Besar-Kecil dan Huruf Besar-Kecil dan Tidak Sensitif?

8

Saya menggunakan Ubuntu 10 dan saya segera mengetahui bahwa case case sensitif ketika tidak nyaman untuk itu (seperti ketika autocomplete path file dengan tab di terminal) tetapi juga case peka ketika menggunakan perintah MV dan CP (juga merepotkan ketika mencoba menduplikasi nama file dengan kasus yang berbeda).

Intinya, saya perlu perintah ini berfungsi tetapi tidak.

cp ./filename.txt ./FileName.txt

Saya hanya berakhir dengan filename.txt:

masukkan deskripsi gambar di sini

Bagaimana saya bisa mendapatkan file yang sama dengan case berbeda tetapi nama yang sama di direktori yang sama?

EDIT: Komentar Maerics di bawah ini membantu saya mengingat bahwa saya sebenarnya mengembangkan pada drive bersama Windows yang menjalankan NTFS yang tidak sensitif huruf. Inilah sebabnya meskipun CP dan MV tidak menghasilkan kesalahan, file tidak disalin (atau lebih mungkin IS disalin, tetapi Windows menggantikan yang sudah ada).

anon58192932
sumber
1
Aneh: Saya menguji perintah ini tanpa kejutan ... Saya tidak punya masalah dengan berbagai kasus di direktori yang sama.
Denys Séguret
5
Perhatikan bahwa perilaku ini tergantung pada jenis sistem file tempat file-file ini ada. Misalnya, FAT32 mungkin tidak membedakan nama file ini.
maerics
WOW. Ini adalah jawaban Maerics. File-file tersebut disimpan pada drive yang terpasang yang menjalankan NTFS. Saya benar-benar lupa karena saya sedang mengembangkan lintas platform yang saya gunakan Windows untuk menyimpan file.
anon58192932
1
@advocate: NTFS peka terhadap huruf besar-kecil, jadi Anda harus bisa memasangnya seperti yang Anda suka. Namun, pertanyaannya adalah apakah ini yang Anda inginkan :)
0xC0000022L
Pengujian menunjukkan bahwa Windows 7 tampaknya tidak peka terhadap huruf besar-kecil.
anon58192932

Jawaban:

4

NTFS 1 dan VFAT tidak peka terhadap huruf besar-kecil, mereka hanya mempertahankan kasus. Itu berarti jika Anda membuat file bernama FileName.txt, sistem file akan mempertahankan nama kasus campuran, tetapi Anda dapat mengakses file dengan kombinasi kasus apa pun dari huruf yang sama, seperti FILENAME.TXT, filename.txtatau fileNAME.txt. Ini menjelaskan Anda tidak dapat memiliki dua file dengan ejaan yang sama dengan hanya variasi huruf besar / kecil di direktori yang sama.

Sistem file yang diekspor SMB harus menerapkan perilaku ini untuk tidak membingungkan klien Windows.

ZFS dapat dikonfigurasi untuk berperilaku seperti itu dengan casesensitivity=mixedproperti.

1 Secara teknis, NTFS peka huruf besar-kecil tetapi OS yang memasang sistem file jenis ini hampir selalu dikonfigurasikan untuk menyembunyikan fitur mendasar ini dan hanya mempertahankan kasing. Namun Windows dapat mengaktifkan sensitivitas case dengan memodifikasi kunci register ini HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitivedan Linux dapat me-mount sistem file ini dengan berbagai perilaku tergantung pada opsi ignore_casedan windows_namesmount.

Jlliagre
sumber
2
NTFS benar-benar adalah case-sensitive. Namun, Win32 tidak peka terhadap huruf besar-kecil, jadi untuk alasan praktis kebanyakan orang menganggap bahwa NTFS juga tidak.
Cody Grey
@CodyGray Ya, Anda benar, terima kasih telah menunjukkan fitur ini. Sistem file NTFS yang mendasarinya memungkinkan nama file yang berbeda hanya berbeda menurut kasusnya.
jlliagre
11

Anda dapat mengaktifkan penyelesaian nama file case-insensitive di bash dengan menambahkan baris berikut ke $HOME/.inputrc:

set completion-ignore-case On

Mengenai nama file: Ini tergantung pada sistem file. Pada sistem file Linux, seharusnya tidak ada masalah. Pada sistem file lain, perilaku dapat dikontrol dengan opsi ke perintah mount. Lihat halaman manual mount(8)untuk informasi lebih lanjut tentang opsi yang tersedia untuk dipasang.

tidak ada
sumber
Anda benar. Sistem file yang mendasari bukan sistem file Linux sehingga ketika CP dan MV bekerja, Windows memilih untuk menyimpan file yang sudah ada (ketika mengganti karena case INsensitivity) case yang membuatnya muncul di terminal Unix seperti perintah tidak bekerja sama sekali . Juga, terima kasih atas penyelesaian mengabaikan kasus, itu akan banyak membantu!
anon58192932
Apakah case 'On' sensitif? ;)
Arj
Sayangnya ini tidak akan membantu Anda dalam skrip.
Sridhar Sarnobat
2

Apakah ini properti sistem file atau yang lainnya?

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

Ini bekerja dengan baik untuk saya.

D.Shawley
sumber
Maerics di atas membantu saya memecahkan masalah. Saya sedang mengembangkan di Ubuntu sebuah windows -> port linux tetapi file-file tersebut disimpan di komputer Windows dan saya lupa saya memasang drive. NTFS yang mendasarinya mencegah kedua file ada pada saat yang bersamaan.
anon58192932
1

Ubuntu tidak sebagian case-sensitive. Itu selalu case sensitif. filename.txtdan Filename.txtdua file berbeda dan dapat ditempatkan di direktori yang sama. Jadi perintah ini:

cp ./filename.txt ./FileName.txt

akan bekerja tanpa masalah di direktori yang sama.

PP
sumber
Namun tidak. Saya sudah berusaha mencari tahu selama satu jam terakhir.
anon58192932
2
mungkin, Anda tidak memiliki filename.txtsendiri di direktori Anda saat ini?
PP
Pasti ada di sana.
anon58192932
Maerics di atas membantu saya memecahkan masalah. Saya sedang mengembangkan di Ubuntu sebuah windows -> port linux tetapi file-file tersebut disimpan di komputer Windows dan saya lupa saya memasang drive. NTFS yang mendasarinya mencegah kedua file ada pada saat yang bersamaan.
anon58192932
2
Saya melihat komentar Maerics. thx
PP