![Linux는 대소문자를 구분하고 대소문자를 구분하지 않으며 항상 불편합니까?](https://rvso.com/image/1316780/Linux%EB%8A%94%20%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EA%B5%AC%EB%B6%84%ED%95%98%EA%B3%A0%20%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EA%B5%AC%EB%B6%84%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9C%BC%EB%A9%B0%20%ED%95%AD%EC%83%81%20%EB%B6%88%ED%8E%B8%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
나는 Ubuntu 10을 사용하고 있으며 터미널에서 탭을 사용하여 파일 경로를 자동 완성할 때와 같이 불편할 때는 대소문자를 구분하지만 MV 및 CP 명령을 사용할 때는 대소문자를 구분하지 않는다는 사실을 빨리 알게 되었습니다(역시 불편함) 대소문자가 다른 파일 이름을 복제하려고 할 때).
본질적으로 작동하려면 이 명령이 필요하지만 작동하지 않습니다.
cp ./filename.txt ./FileName.txt
나는 단지 다음과 같이 끝납니다 filename.txt
:
대소문자는 다르지만 이름은 같은 파일을 같은 디렉터리에서 어떻게 얻을 수 있나요?
편집: 아래 Maerics의 설명은 제가 실제로 대소문자를 구분하지 않는 NTFS를 실행하는 Windows 공유 드라이브에서 개발하고 있다는 사실을 기억하는 데 도움이 되었습니다. 이것이 CP 및 MV가 오류를 생성하지 않더라도 파일이 복사되지 않는 이유입니다(또는 IS 복사될 가능성이 높지만 Windows가 이미 존재하는 파일을 대체함).
답변1
NTFS 1 과 VFAT는 대소문자를 구분하지 않고 대소문자만 보존합니다. 즉 FileName.txt
, 이라는 파일을 생성하면 파일 시스템은 대소문자 혼합 이름을 유지하지만 FILENAME.TXT
, filename.txt
또는 등 동일한 문자의 대소문자 조합을 사용하여 파일에 액세스할 수 있습니다 fileNAME.txt
. 이는 동일한 디렉터리에 대문자/소문자만 변형된 동일한 철자를 가진 두 개의 파일을 가질 수 없음을 설명합니다.
SMB로 내보낸 파일 시스템은 Windows 클라이언트를 혼동하지 않도록 이 동작을 구현해야 합니다.
ZFS는 속성을 사용하여 그런 방식으로 동작하도록 구성할 수 있습니다 casesensitivity=mixed
.
1 기술적으로 NTFS는 대소문자를 구분하지만 이 유형의 OS 마운트 파일 시스템은 거의 항상 이 기본 기능을 숨기고 대소문자만 보존하도록 구성됩니다. 그러나 Windows는 이 레지스터 키를 수정하여 대소문자 구분을 활성화할 수 있으며 Linux는 및 마운트 옵션 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive
에 따라 다양한 동작으로 이러한 파일 시스템을 마운트할 수 있습니다 .ignore_case
windows_names
답변2
다음 행을 에 추가하여 bash에서 대소문자를 구분하지 않는 파일 이름 완성을 활성화할 수 있습니다 $HOME/.inputrc
.
set completion-ignore-case On
파일 이름 관련: 이는 파일 시스템에 따라 다릅니다. Linux 파일 시스템에서는 문제가 없습니다. 다른 파일 시스템에서는 mount 명령에 대한 옵션을 사용하여 동작을 제어할 수 있습니다. 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
우분투는 부분적으로 대소문자를 구분하지 않습니다. 항상 대소문자를 구분합니다. 두 개의 서로 다른 파일 filename.txt
이며 Filename.txt
동일한 디렉토리에 배치될 수 있습니다. 따라서 이 명령은 다음과 같습니다.
cp ./filename.txt ./FileName.txt
동일한 디렉토리에서는 문제 없이 작동합니다.