파일 이름에 예약된 문자

파일 이름에 예약된 문자

파일 이름에 허용되지 않는 유일한 문자는 이라는 인상을 받았지만 이름에 , , , 또는 그 중 하나와 같은 문자가 /포함된 파일을 만들 수 없는 것 같습니다 . 예를 들어,*\":|<>

$ echo "*"
> *
$ touch "*"
> touch: setting times of `*': No such file or directory

사용자에게 파일 이름을 묻는 쉘 스크립트를 작성 중인데 이름에 잘못된 문자가 포함되어 있지 않은지 확인하고 싶습니다. 어딘가에 목록이 있나요?

고쳐 쓰다:

파일 이름에 "*" 및 기타 문자를 허용하지 않는 FAT32 파일 시스템(USB 스틱)에서 이 작업을 수행하고 있다는 사실을 깨닫지 못했습니다. 작동하지 않는 것도 당연합니다. 미안 내 잘못이야! !

답변1

예약된 바이트는 0(ASCII Nul)과 0x2f(ASCII '/', 슬래시)뿐이라고 확신합니다.

".", "\" 및 기타 이상한 내용이 포함된 파일을 쉽게 만들 수 있습니다. 모든 종류의 이상한 바이트 값을 포함하는 "유니코드 파일 이름"을 생각해 보십시오.

물론 동일한 디렉토리에 중복된 파일 이름을 가질 수 없으므로 일반적으로 파일 이름 "." 및 ".."는 단순한 사용자가 만들 수 없습니다. 커널의 파일 시스템 부분은 디렉토리가 생성될 때 이를 생성합니다.

또한 대부분의 파일 시스템에는 파일 이름 길이에 대한 제한이 있으며 빈 문자열 이름으로 파일을 만들 수 없습니다.

답변2

실제로 작은따옴표로 만들면 됩니다.

예를 들어touch '*'

또는 FM을 사용하세요.

여기에 이미지 설명을 입력하세요.

자세한 내용은 다음을 참조하세요.Reserved characters and words 이 페이지에서, 적어도 / \ . ..허용되지 않음

관련 정보