Shell

文件名中的保留字元

  • October 1, 2012

我的印像是文件名中唯一不允許使用的字元是/,但我似乎無法創建名稱包含諸如*\":|或其中<任何一個字元的文件>。例如,

$ echo "*"
> *
$ touch "*"
> touch: setting times of `*': No such file or directory

我正在編寫一個要求使用者鍵入文件名的 shell 腳本,並且我想確保該名稱沒有任何無效字元。某處有清單嗎?

更新:

我沒有意識到我是在 FAT32 文件系統(USB 記憶棒)中執行此操作的,它不允許在文件名中使用“*”和其他字元。難怪它不起作用。對不起這是我的錯!!

我很確定唯一的保留字節是 0(ASCII Nul)和 0x2f(ASCII ‘/’,正斜杠)。

您可以輕鬆地製作包含“.”、“\”和其他時髦內容的文件。想想“unicode 文件名”,其中包含各種奇怪的字節值。

當然,同一目錄中不能有重複的文件名,因此文件名為“.”。並且“..”通常不能僅由使用者創建:核心的文件系統部分在創建目錄時創建它們。

另請注意,大多數文件系統對文件名的長度都有限制,您不能創建名稱為空字元串的文件。

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