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