Linux 대소 문자를 구분하고 대소 문자를 구분하지 않고 항상 불편합니까? 구분하지만 MV 및

Ubuntu 10을 사용하고 있으며 (터미널의 탭으로 파일 경로를 자동 완성 할 때와 같이) 불편할 때 대소 문자를 구분하지만 MV 및 CP 명령을 사용할 때도 대소 문자를 구분하지 않는다는 것을 빨리 알게되었습니다 다른 경우와 파일 이름을 복제하려고 할 때).

본질적 으로이 명령이 작동해야하지만 작동하지 않습니다.

cp ./filename.txt ./FileName.txt

방금 끝났습니다 filename.txt.

같은 디렉토리에 다른 이름이지만 동일한 이름을 가진 동일한 파일을 어떻게 얻을 수 있습니까?

편집 : 아래의 Maerics의 의견은 실제로 NTFS를 실행하는 Windows 공유 드라이브에서 대소 문자를 구분하지 않는다는 것을 기억하는 데 도움이되었습니다. CP와 MV가 오류를 생성하지 않더라도 파일이 복사되지 않거나 IS가 복사 될 가능성이 높지만 Windows는 기존 파일을 대체합니다.



답변

NTFS 1 및 VFAT는 대 / 소문자를 구분하지 않으며 대 / 소문자 만 보존합니다. 라는 이름의 파일을 만들 경우 그 말은 FileName.txt, 파일 시스템은 혼합 된 경우 이름을 유지하지만, 동일한 문자, 등을 어떤 경우에 조합을 사용하여 파일에 액세스 할 수 있습니다 FILENAME.TXT, filename.txt또는 fileNAME.txt. 이것은 동일한 디렉토리에서 대 / 소문자가 변하는 철자가 동일한 두 파일을 가질 수 없음을 설명합니다.

SMB 내 보낸 파일 시스템은 Windows 클라이언트를 혼동하지 않도록이 동작을 구현해야합니다.

ZFS는 casesensitivity=mixed속성 과 같은 방식으로 동작하도록 구성 할 수 있습니다 .

1 기술적으로 NTFS는 대소 문자를 구분하지만이 유형의 파일 시스템을 마운트하는 OS는 거의 항상이 기본 기능을 숨기고 대소 문자 만 보존하도록 구성됩니다. 그러나 Windows는이 레지스터 키를 수정하여 대소 문자를 구분할 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive수 있으며 Linux는 ignore_casewindows_names마운트 옵션 에 따라 다양한 동작으로 이러한 파일 시스템을 마운트 할 수 있습니다.


답변

다음 줄을 다음에 추가하여 bash에서 대소 문자를 구분하지 않는 파일 이름 완성을 활성화 할 수 있습니다 $HOME/.inputrc.

set completion-ignore-case On

파일 이름과 관련하여 : 파일 시스템에 따라 다릅니다. Linux 파일 시스템에서는 문제가 없어야합니다. 다른 파일 시스템에서는 mount 명령에 대한 옵션을 사용하여 동작을 제어 할 수 있습니다. mount(8)마운트 할 수있는 옵션에 대한 자세한 내용은 매뉴얼 페이지 를 참조하십시오.


답변

이것은 파일 시스템의 속성입니까 아니면 다른 것입니까?

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

그것은 나를 위해 잘 작동합니다.


답변

우분투는 부분적으로 대소 문자를 구분하지 않습니다. 항상 대소 문자를 구분합니다. filename.txt그리고 Filename.txt두 개의 서로 다른 파일입니다과 같은 디렉토리에 배치 할 수 있습니다. 따라서이 명령 :

cp ./filename.txt ./FileName.txt

동일한 디렉토리에서 문제없이 작동합니다.