폴더 이름에 점 (.)이 포함되어있는 것은 좋지 않습니까? 점이 여러 개인 파일 이름은 어떻습니까? 대한 데이터를 저장하고

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

experiment_L0.5

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

file_L0.5.txt

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

감사!



답변

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

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

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

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

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

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


답변

짧은 대답

  • 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텍스트 파일 ( 예 : 텍스트 파일) 의 파일 이름 확장자를 사용합니다 .

관련


답변

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

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

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


답변

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

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


답변

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

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

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