같은 이름의 폴더와 파일을 가질 수없는 이유는 무엇입니까?


21

이전에이 문제가 발생한 적이 없지만 어떤 이유로 폴더 이름을로 바꿀 수 없습니다 packages/.

이것은 구조입니다 :

root
  -  packages_old/
  -  packages

Thunar로 폴더 이름을 바꾸려고하면 파일이 이미 존재한다는 오류 메시지가 나타납니다. 동일 mv:

blender iso $ mv packages_old/ packages/
mv: accessing `packages/': Not a directory

파일과 폴더의 이름을 같은 이름으로 바꿀 수없는 이유는 무엇입니까?

root
  -  packages/
  -  packages

나는 맹세 내가 전에 이런 짓을했습니다.


19
당신의 기억은 당신이 생각하는 것만 큼 바보가 아닐 것입니다. 유닉스 플랫폼에서 "모든 것이 파일입니다". 디렉토리는 특별한 종류의 파일이므로 동일한 이름의 파일과 폴더를 가질 수 없습니다. 의 .d디렉토리에 있는 기존 확장 과 관련이 /etc있습니다. 당신이 한 가정 ls packages또는 vim packages당신이 디렉토리 나 파일을 원하는 경우 어떻게 시스템은 알 것입니다 -?
jw013

2
사용중인 OS를 알려주시겠습니까? 내가 아는 대부분의 OS에서 파일과 디렉토리는 같은 이름을 가질 수 없기 때문에
rahmu

2
@ j013, 왜 댓글에 하고 답변을 쓰지 않았 습니까?
andcoz

1
Windows에서도 할 수 없습니다. 내 Windows 7 컴퓨터에서 이렇게하면 오류가 발생합니다.There is already a file with the same name as the folder name you specified. Specify a different name.
Chris Down

4
Windows에서 기본 설정은 확장자를 무시하는 것이므로 동일한 폴더에 package디렉토리와 package.txt파일 이있을 수 있습니다 . Windows 탐색기에서 실제로 "패키지"라는 항목이 있어야합니다. 실제로 파일 이름의 일부만 숨기고 있습니다.
Arcege

답변:


35

유닉스에서는 거의 모든 것이 파일입니다. 디렉토리는 사용자 관점에서 다른 파일을 "포함"할 수있는 특수한 유형의 파일입니다.

Not a directory기존 파일이 디렉토리가 아니고 디렉토리가 파일 유형이고 하나의 디렉토리에 동일한 이름의 파일이 두 개있을 수 없으므로 오류 가 발생합니다.


6
메모리 문제와 관련하여 과거에는 파일과 디렉토리의 이름이 같았지만 "package"및 "Package"와 같이 다른 경우가있었습니다. 파일 이름은 대소 문자를 구분하므로 작동합니다.
noamtm

2

당신이 그런 일을 할 수 있다면 디렉토리에있는 파일을 반복하려고 할 때 나와 같은 프로그래머에게는 인생이 비참 할 수 있기 때문입니다.

다음 의사 코드의 경우 :

isDir('/path/to/same_file_and_folder_name')

OS가 true 또는 false로 응답해야합니까?


그냥 '둘 다'를 반환해야합니다.
Anthon


1
@ G-Man 유형 부울이 예상되었으며 개체가 있습니다 (약속).
Scott Yang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.