Files

哪些字元可以在文件名中使用?

  • July 20, 2021

我似乎可以使用幾乎任何有效字元在 unix 中創建文件名。

touch \; &&
touch \\ &&
touch \" &&
touch $'\n' &&
touch $'\t' &&
touch $'\v' &&
touch $'\23' &&
touch $'\13' &&
echo "DONE!"

我發現唯一不起作用的字元是/NUL

touch /
touch $'\0'

文件名中是否還有其他無效或無法使用的字元?

答案是:在類 Unix 系統中,文件名由字節組成,而不是字元。至少從核心及其 API 的角度來看。

\000 除了(ASCII: NUL) 和\057 (ASCII: slash)之外,類 Unix 核心通常對任何字節值都是中立的。在 Linux 中,文件系統層沒有其他限制,但某些 FS 驅動程序及其模式會導致某些名稱被拒絕,通常是由於無法翻譯。例如,不能UTF-8在任何掛載的東西-o iocharset=utf8(例如 typescifsvfat)上創建一個無效的文件名。DOS/Windows 兼容的 FS 都不允許您將 \134(ASCII:反斜杠)作為名稱的一部分。或者該msdos類型將應用有關 8.3 名稱的 DOS 限制。

不知道 ext3/ext4 有限制,但前面提到了\000\057.

引用自:https://unix.stackexchange.com/questions/230291