폴더 이름에 점 (.)이 포함되어있는 것은 좋지 않습니까? 점이 여러 개인 파일 이름은 어떻습니까?


28

폴더 이름에 점 (.)이 포함되어있는 경우가 있습니다. 예를 들어 L = 0.5에서 수행 한 실험에 대한 데이터를 저장하고 있습니다. 따라서 폴더 이름은 다음과 같습니다.

experiment_L0.5

파일 이름에 대해서도 비슷한 문제가 발생할 수 있습니다. 예를 들면 다음과 같습니다.

file_L0.5.txt

우분투에서 일하고 있는데, 이것이 나쁜 습관입니까? 이 디렉토리를 Windows 사용자와 공유하는 경우는 어떻습니까?

감사!


5
점이 첫 번째 문자이면 폴더가 숨겨집니다. 그 외에는 중요하지 않다고 생각합니다.
user3121023

답변:


37

내가 아는 한, 하나 또는 여러 개의 점으로 폴더 및 파일 이름을 지정하는 데 문제가 없습니다.

우분투는 일반적으로 파일 형식을 식별하기 위해 점과 세 문자 (예 : .txt)를 사용하지 않습니다. 따라서 이것은 우분투 문맥에서 특별한 의미가 없습니다. Windows와 파일을 공유 할 때 유용합니다. 우분투는 파일의 처음 몇 바이트에서 매직 넘버 를 사용하여 파일 형식을 식별합니다. 그러나 노틸러스. 파일 유형을 식별하기 위해 점 및 3 자 확장자를 사용할 수있는 경우 매직 숫자를 무시합니다. 이 설정은 변경할 수 있습니다. 노틸러스에서 확장명을 무시하도록 설정을 참조하십시오.

Ubuntu에서와 같이 점으로 파일 또는 폴더 이름을 시작 .experiment_L0.5하면 파일 또는 폴더가 숨겨집니다. 노틸러스에서 Ctrl+ H를 눌러 숨겨진 파일 표시를 전환 할 수 있습니다 . Windows에서 파일 이름은로 시작합니다. 숨겨져 있지 않습니다. 따라서 숨겨진 파일을 .experiment_L0.5Windows 시스템으로 전송하면 잘 보일 것입니다.

우분투에서 파일 이름은 끝에 특별한 의미가 없으므로 점으로 끝날 수 있습니다. 그러나 Windows에서 점은 파일 이름과 확장자를 분리하며 파일 이름은 점으로 끝나지만 확장자는 허용되지 않습니다. Windows에서 이러한 파일을 만들려고 할 때 이름, 점 및 확장자가없는 파일을 얻었습니다.

참조 : 파일 이름에 대한 위키

이것이 도움이되기를 바랍니다.


4
맞습니다. 당신은 창문이 파일을 공유하는 경우, 당신은 대장 피하기 위해이 :문제를 만듭니다 윈도우 파일 이름에 잘못된 문자를, ( 그것은 않습니다 ). 여기도 참조 하십시오 .
Rmano

@Rmano에게 감사합니다. 내 답변에 위키에 대한 링크를 추가했습니다.
user68186

1
호환성에 관해서 fname.는 Windows에서 후행 점 (예 :)을 사용할 수 없다고 생각합니다.
Rmano

다시 @Rmano에게 감사드립니다. 몇 가지 빠른 테스트를 실행하여 test.Windows에서 이름이 지정된 파일을 만들지 못했습니다 . 답변을 업데이트하겠습니다.
user68186

1
Rmano의 의견에 추가하려면 VirtualBox를 통해 Windows 드라이브를 마운트 한 경우 우분투에서 문제가 될 수 있습니다. 끝에 점이있는 이름을 mkdir하려고하면 '프로토콜 오류'와 함께 실패합니다.
bvanlew

11

짧은 대답

  • Windows에서는 다음 문자를 사용할 수 없습니다 : <>:"/\|?*( source )
  • 권장하지 않는 문자는 다음 과 같습니다. space and dot .( source )
    • 이름에 공백이 있으면 명령 행 도구를 사용하기가 더 어렵습니다 (더 어렵고 불가능하지는 않음).
    • 점은 RegEx에서 사용됩니다 (예 :을 사용하려는 경우 grep). 선행 점은 Linux에서 규칙에 의해 파일을 숨 깁니다. Windows에서는 파일 확장자에 점이 사용되며 파일 형식 감지에 사용됩니다.
  • 또한 Windows 허용하지 않는 파일 이름 CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8,와 LPT9. ( 소스 )
  • 내가 아는 유닉스 파일 시스템에서 허용되지 않는 유일한 문자는 /null입니다 (null 바이트 \0).
  • 참조 : 파일 시스템의 한계 (난 당신이 호환되도록 할 윈도우에 모른다).

긴 대답

기술 배경 : 파일 시스템

우분투는 ext4파일 시스템 을 사용 합니다. 파일 시스템은 파일이 기본 스토리지 (디스크 또는 SSD 등)에 저장된 위치를 추적하며 소유자 / 그룹 / 기타 형식의 권한은 읽기 / 쓰기 / 실행, 타임 스탬프, 이름입니다.

파일 시스템은 사용 가능한 스토리지를 구성합니다. 첫 번째 블록을 "슈퍼 블록"이라고합니다. 이 블록은 파일 시스템을 마운트하는 데 사용됩니다. 내가 아는 한, 모든 최신 파일 시스템은 공간을 블록 단위로 나눕니다. 파일 시스템을 만들 때 블록 크기를 구성 할 수 있지만 대부분의 파일 시스템에도 고정 블록 크기가 있다고 생각합니다. ext4 (및 ext2 및 ext3)는 파일 및 디렉토리에 소위 "inodes"를 사용합니다. 이러한 inode에는 다른 블록 (inode이거나 "데이터 블록"일 수도 있음)에 대한 포인터가 포함되어 있습니다. 그리고 파일의 "첫번째"inode에는 위에서 언급 한 모든 정보가 들어 있습니다.

다른 정보는 파일의 "유형"입니다. "유형"은 다음과 같습니다.

  • 일반 파일
  • 예배 규칙서
  • 장치 파일 (블록 또는 문자 장치)
  • ...

실제로 편집기를 사용하여 디렉토리를 열 수도 있습니다.

vim /home

디렉토리에 전체 경로가 포함되어 있지 않지만 내용의 이름 만 포함되어 있으므로 파일에을 포함 할 수없는 이유는 없습니다 /. 편리 할 것 같아요. (왜 /허용되지 않는지 아는 사람이 있습니까?)

그러나 다른 파일 시스템에서는 상황이 다릅니다. FAT16과 FAT32는 소위 "파일 할당 테이블"을 사용했습니다. 즉, 파일에 저장된 모든 파일이 포함 된 테이블이 있으며, 여기서 "클러스터"가 시작되고 단일 클러스터 목록으로 끝나는 클러스터가 있습니다.

내가 말하고 싶은 중요한 것은 허용되지 않는 문자도 파일 시스템에 따라 달라질 수 있다는 것입니다.

기술 배경 : 파일 형식

  • Windows는 파일 확장자를 사용하여 파일 유형을 감지합니다.
  • Linux는 "Magic Bytes"를 사용하여 파일 유형을 감지합니다. 매직 바이트 는 파일 내용의 일부이므로 이름과 완전히 독립적입니다. 이 바이트는 파일 형식 사양의 일부입니다 ( 예를 들어 png 사양 참조 ). 또한 .txt또는 같은 .html텍스트 파일 ( 예 : 텍스트 파일) 의 파일 이름 확장자를 사용합니다 .

관련


어떻게 FAT 저장 파일 이름에 대한 귀하의 생각은 아주 정확하지 : en.wikipedia.org/wiki/FAT32#File_Allocation_Table - 실제 "FAT"저장소 목록 클러스터 , 동안 디렉토리 의 첫 번째 클러스터에 대한 포인터와 파일 이름의 목록을 저장 ext4를 설명하는 방법과 유사한 파일. :) 또한, .txt.html파일이 실제로 다른 "마법 값을"해야합니까 -에 HTML 파일의 이름을 변경하려고 test.txt실행 file test.txt. 원래 질문과는 관련이 없지만 여전히 :)
Sergey

1
고마워, 나는 FAT에 관한 잘못된 부분을 제거했다. 매직 값에 대한 file: 및 file파일의 유형을 결정하기 위해 매직 값을 사용하지 않습니다. 유효한 모든 HTML 파일은 읽을 수있는 문자를 포함한다는 의미에서 텍스트 파일이지만 유효한 모든 텍스트 파일이 유효한 HTML 파일 (W3C 유효성 검사기에 대해 유효성을 검사한다는 의미는 아님)은 아닙니다. 따라서 많은 파일 형식 (html, xml, csv, js, php, c, h, cpp 등)은 실제로 텍스트 파일입니다. 이진 파일 만 잘 정의 된 위치에 매직 바이트가 있습니다. 위에서 이름을 지정한 모든 파일에는 내용 앞에 임의의 공백이있을 수 있습니다.
Martin Thoma

5

완전성을 위해 단일 점 .또는 두 점 으로 만 구성된 이름 ..은 특별합니다.

  • . 현재 디렉토리를 참조
  • .. 부모 디렉토리를 참조

이러한 항목은 자동으로 추가되며 항상 존재하므로 .or 라는 파일을 가질 수 없습니다 ...


좋은 지적. 이것은 Windows와 Ubuntu 모두에 적용됩니다.
user68186

1

이것은 리눅스 나 윈도우에서는 중요하지 않습니다.

"program.d"라는 이름의 폴더를 갖는 것이 일반적입니다. 프로그램의 구성과 내용을 저장합니다 (/ etc 디렉토리에 있음).


0

파일 이름 지정은 Unix, Linux 파일 시스템에서 매우 유연합니다. 당신이 가질 수없는 유일한 파일 이름은 null 문자이거나 /그 이름에 a 를 포함하는 것 입니다. 그러나 이름 이식성의 관점에서 다른 시스템에서 금지 / 예약 된 문자를 사용하지 않는 것이 좋습니다. " * : < > ? \ / |Windows 시스템에서 파일에 액세스하려면 파일 이름 에 문자 (NTFS로 제한됨)를 사용하지 않아야 합니다.

그리고 file-name에서 (마침표)를 사용하는. 것에 관해서는 모든 시스템에서 "예약 된" 문자 가 아닌 것처럼 보일 수 있다고 생각합니다 (OpenVMS, MS-DOS 및 Windows에서 제외 파일 / 디렉토리 이름은 허용되지만 다음 위키 백과 링크에서 언급 된 것처럼 마지막 항목은 VMS, MS-DOS 및 Windows에서 확장자 구분 기호로 해석됩니다.

다른 시스템에서는 일반적으로 파일 이름의 일부로 간주되며 둘 이상의 기간이 허용 될 수 있습니다. 유닉스에서 선행 기간은 파일이나 폴더가 일반적으로 숨겨져 있음을 의미합니다.

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