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


8

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

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

cp ./filename.txt ./FileName.txt

방금 끝났습니다 filename.txt.

여기에 이미지 설명을 입력하십시오

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

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


1
이상합니다 : 놀랍지 않게이 명령을 테스트했습니다 ... 같은 디렉토리에서 다른 경우에 문제가 없습니다.
Denys Séguret

5
이 동작은 이러한 파일이 존재하는 파일 시스템의 유형에 따라 달라질 수 있습니다. 예를 들어 FAT32는 이러한 파일 이름을 구분하지 않을 수 있습니다.
maerics

와. 이것이 매 릭스의 대답이었습니다. 파일은 NTFS를 실행하는 마운트 된 드라이브에 저장됩니다. Windows를 사용하여 파일을 저장하는 크로스 플랫폼을 개발하고 있기 때문에 완전히 잊었습니다.
anon58192932

1
@advocate : NTFS는 대소 문자를 구분하므로 원하는 방식으로 마운트 할 수 있어야합니다. 그러나 문제는이 : 당신이 원하는 무엇 여부
0xC0000022L

테스트 결과 Windows 7은 대소 문자를 구분하지 않는 것으로 나타났습니다.
anon58192932

답변:


5

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마운트 옵션 에 따라 다양한 동작으로 이러한 파일 시스템을 마운트 할 수 있습니다.


3
NTFS 대소 문자를 구분합니다. 그러나 Win32는 대 / 소문자를 구분하지 않으므로 실용적인 이유로 대부분의 사람들은 NTFS도 그렇지 않다고 가정합니다.
코디 그레이

@CodyGray 네, 맞습니다.이 기능을 지적 해 주셔서 감사합니다. 기본 NTFS 파일 시스템은 경우에 따라 다른 파일 이름 만 허용합니다.
jlliagre 2016 년

11

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

set completion-ignore-case On

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


당신이 올바른지. 기본 파일 시스템은 Linux 파일 시스템이 아니기 때문에 CP 및 MV가 작동하는 동안 Windows는 명령이 전혀 작동하지 않는 것처럼 Unix 터미널에 표시되도록 이미 존재하는 파일 (대소 문자가 무감각으로 재정의되는 경우)을 유지하도록 선택합니다. . 또한 완료 무시 사례 덕분에 많은 도움이 될 것입니다!
anon58192932

'On'은 대소 문자를 구분합니까? ;)
Arj

슬프게도 이것은 스크립트에서 도움이되지 않습니다.
Sridhar Sarnobat '

2

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

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

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


위의 매 릭스가 문제 해결에 도움이되었습니다. 우분투에서 windows-> linux 포트를 개발하고 있지만 파일은 Windows 컴퓨터에 저장되어 있으며 드라이브를 마운트하지 않았습니다. 기본 NTFS로 인해 두 파일이 동시에 존재하지 않습니다.
anon58192932

1

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

cp ./filename.txt ./FileName.txt

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


하지만 그렇지 않습니다. 지난 한 시간 동안 알아 내려고 노력했습니다.
anon58192932

2
할 수있다, 당신은 필요가 없습니다 filename.txt통해 UR 현재 디렉토리에 자신을?
PP

확실히 거기에 있습니다.
anon58192932

위의 매 릭스가 문제 해결에 도움이되었습니다. 우분투에서 windows-> linux 포트를 개발하고 있지만 파일은 Windows 컴퓨터에 저장되어 있으며 드라이브를 마운트하지 않았습니다. 기본 NTFS로 인해 두 파일이 동시에 존재하지 않습니다.
anon58192932

2
매 릭스의 의견을 보았습니다. thx
PP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.