wef*_*fa3 14 filesystems filenames files namespace
我似乎可以使用几乎任何有效字符在 unix 中创建文件名。
touch \; &&
touch \\ &&
touch \" &&
touch $'\n' &&
touch $'\t' &&
touch $'\v' &&
touch $'\23' &&
touch $'\13' &&
echo "DONE!"
Run Code Online (Sandbox Code Playgroud)
我发现唯一不起作用的字符是/和NUL:
touch /
touch $'\0'
Run Code Online (Sandbox Code Playgroud)
文件名中是否还有其他无效或无法使用的字符?
Inc*_*rsi 23
答案是:在类 Unix 系统中,文件名由字节组成,而不是字符。至少从内核及其 API 的角度来看。
类 Unix 内核通常对任何字节值都保持中立,但\000?(ASCII: NUL) 和\057?(ASCII: slash) 除外。在 Linux 中,文件系统层没有其他限制,但某些 FS 驱动程序及其模式导致某些名称被拒绝,通常是由于无法翻译。例如,不能UTF-8在挂载的任何内容上创建无效的文件名-o iocharset=utf8(例如类型cifs或vfat)。没有任何与 DOS/Windows 兼容的文件系统允许您将 \134?(ASCII: 反斜杠) 作为名称的一部分。或者该msdos类型将应用有关 8.3 名称的 DOS 限制。
不知道 ext3/ext4 有限制,但前面提到过\000和\057.
| 归档时间: |
|
| 查看次数: |
25829 次 |
| 最近记录: |