Files
哪些字元可以在文件名中使用?
我似乎可以使用幾乎任何有效字元在 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
(例如 typescifs
或vfat
)上創建一個無效的文件名。DOS/Windows 兼容的 FS 都不允許您將 \134(ASCII:反斜杠)作為名稱的一部分。或者該msdos
類型將應用有關 8.3 名稱的 DOS 限制。不知道 ext3/ext4 有限制,但前面提到了
\000
和\057
.