Shell
文件名中的保留字元
我的印像是文件名中唯一不允許使用的字元是
/
,但我似乎無法創建名稱包含諸如*
、\
、"
、:
、|
或其中<
任何一個字元的文件>
。例如,$ echo "*" > * $ touch "*" > touch: setting times of `*': No such file or directory
我正在編寫一個要求使用者鍵入文件名的 shell 腳本,並且我想確保該名稱沒有任何無效字元。某處有清單嗎?
更新:
我沒有意識到我是在 FAT32 文件系統(USB 記憶棒)中執行此操作的,它不允許在文件名中使用“*”和其他字元。難怪它不起作用。對不起這是我的錯!!
我很確定唯一的保留字節是 0(ASCII Nul)和 0x2f(ASCII ‘/’,正斜杠)。
您可以輕鬆地製作包含“.”、“\”和其他時髦內容的文件。想想“unicode 文件名”,其中包含各種奇怪的字節值。
當然,同一目錄中不能有重複的文件名,因此文件名為“.”。並且“..”通常不能僅由使用者創建:核心的文件系統部分在創建目錄時創建它們。
另請注意,大多數文件系統對文件名的長度都有限制,您不能創建名稱為空字元串的文件。