짧은 대답

짧은 대답

때로는 폴더 이름에 점( .)이 포함되는 것이 실용적일 때도 있습니다. 예를 들어, L=0.5에서 수행된 실험에 대한 데이터를 저장하고 있습니다. 따라서 폴더 이름은 다음과 같을 수 있습니다.

experiment_L0.5

파일 이름에도 비슷한 문제가 발생할 수 있습니다. 예를 들어:

file_L0.5.txt

Ubuntu에서 작업하는 것이 나쁜 습관입니까? 이 디렉토리를 Windows 사용자와 공유하는 것은 어떻습니까?

답변1

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

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

Ubuntu에서는 파일이나 폴더 이름을 점으로 시작하면(예 .experiment_L0.5: 파일이나 폴더가 숨겨집니다.) 노틸러스에서 Ctrl+를 눌러 숨겨진 파일 표시를 전환할 수 있습니다 H. Windows에서는 .앞에 로 시작하는 파일 이름이 숨겨지지 않습니다. 따라서 이름이 지정된 숨겨진 파일을 Windows 시스템으로 전송하면 .experiment_L0.5명확하게 표시됩니다.

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

참조:파일 이름 위키

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

답변2

짧은 대답

  • Windows에서는 다음 문자를 허용하지 않습니다: <>:"/\|?*(원천)
  • 권장되지 않는 추가 문자는 공백 및 점 .(원천)
    • 이름에 공백이 있으면 명령줄 도구를 사용하기가 더 어렵습니다(더 어렵지만 불가능하지는 않습니다).
    • 점은 RegEx에서 사용됩니다(예: 를 사용하려는 경우 grep). Linux에서는 선행 점으로 인해 파일이 숨겨집니다. Windows에서는 파일 형식 감지에 사용되는 파일 확장자에 점을 사용합니다.
  • Windows 에서는 또한 파일 이름 CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, , , , 및 를 LPT3허용 하지 않습니다 . (LPT4LPT5LPT6LPT7LPT8LPT9원천)
  • 내가 아는 Unix 파일 시스템에서 허용되지 않는 유일한 문자는 /및 null(널 바이트, \0)입니다.
  • 또한보십시오:파일 시스템 제한(어떤 Windows와 호환되기를 원하는지 모르겠습니다.)

긴 대답

기술적 배경: 파일 시스템

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

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

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

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

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

vim /home

디렉토리에는 전체 경로가 포함되어 있지 않고 콘텐츠 이름만 포함되어 있으므로 파일에 /. 편리하지 않을까 싶습니다. (왜 /허용되지 않는지 아시는 분 계신가요 ?)

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

제가 말씀드리고 싶었던 중요한 점은 허용되지 않는 문자도 파일 시스템에 따라 달라질 수 있다는 것입니다.

기술적 배경: 파일 형식

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

관련된

답변3

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

  • .현재 디렉토리를 가리킨다
  • ..상위 디렉토리를 참조

해당 항목은 자동으로 추가되고 항상 존재하므로 이름이 .또는 ...

답변4

파일 이름 지정은 Unix, Linux 파일 시스템에서 매우 유연합니다. 가질 수 없는 유일한 파일 이름은없는/문자 또는 이름에 a가 포함된 문자입니다 . 그러나 이름 이동성 관점에서 볼 때 다른 시스템에서 금지/예약된 문자를 사용하지 않는 것이 좋습니다. " * : < > ? \ / |Windows 시스템에서 파일에 액세스하려는 경우 파일 이름에 어떤 문자(NTFS로 제한됨)도 사용하면 안 되는 것과 같습니다 .

그리고.파일 이름에 (마침표) 를 사용하는 방법, 내 생각에는 별 것 아닌 것 같으니까 괜찮을 것 같아."예약된"모든 시스템에서 문자(파일/디렉토리 이름에 사용이 허용되는 OpenVMS, MS-DOS 및 Windows 제외)에서 언급한 대로 마지막 발생은 VMS, MS-DOS 및 Windows의 확장 구분 기호로 해석됩니다. 다음 Wikipedia 링크:

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

관련 정보