유효한 문자를 사용하여 유닉스에서 파일 이름을 만들 수 있는 것 같습니다.
touch \; &&
touch \\ &&
touch \" &&
touch $'\n' &&
touch $'\t' &&
touch $'\v' &&
touch $'\23' &&
touch $'\13' &&
echo "DONE!"
내가 찾은 작동하지 않는 유일한 문자는 다음 /
과 같습니다 NUL
.
touch /
touch $'\0'
유효하지 않거나 파일 이름에 사용할 수 없는 다른 문자가 있습니까?
답변1
대답은 다음과 같습니다. Unix 계열 시스템에서 파일 이름은 다음과 같이 구성됩니다.바이트, 문자보다는. 적어도 커널과 API의 관점에서는 그렇습니다.
Unix 계열 커널은 일반적으로 \000
(ASCII: NUL) 및 (ASCII: 슬래시)를 제외한 \057
모든 바이트 값에 중립적입니다 . Linux에서는 파일 시스템 계층에 대한 다른 제한 사항이 없지만 특정 FS 드라이버 및 해당 모드로 인해 일반적으로 번역할 수 없기 때문에 특정 이름이 거부됩니다. 예를 들어 , UTF-8
유형 -o iocharset=utf8
이나 cifs
. vfat
DOS/Windows 호환 FS에서는 이름의 일부로 \134(ASCII: 백슬래시)를 사용할 수 없습니다. 또는 msdos
유형에 8.3 이름에 대한 DOS 제한이 적용됩니다.
Ext3/ext4에는 알 수 없는 제한 사항이 있지만 이전에 언급한 \000
및 \057
.