如果我想创建一个保证不代表文件名的字符串,我可以在 Windows 上将以下字符之一放入其中:
\ / : * ? | < >
例如
this-is-a-filename.png
?this-is-not.png
有没有办法在 Linux 上将字符串标识为“不可能是文件”?
如果我想创建一个保证不代表文件名的字符串,我可以在 Windows 上将以下字符之一放入其中:
\ / : * ? | < >
例如
this-is-a-filename.png
?this-is-not.png
有没有办法在 Linux 上将字符串标识为“不可能是文件”?
几乎没有任何限制——除了'/'
and '\0'
,你可以使用任何东西。但是,有些人认为允许这么大的灵活性并不是一个好主意。
空字符串是 Linux 上唯一真正无效的路径名,如果您只需要一个无效名称,它可能对您有用。您也可以使用像“ ///foo
”这样的字符串,它不是规范路径名,尽管它可以引用文件(“ /foo
”)。另一种可能性是类似于“ /dev/null/foo
”,因为/dev/null
具有 POSIX 定义的非目录含义。如果您只需要不能引用常规文件的字符串,您可以使用“ /
”或“ .
”,因为它们始终是目录。
从技术上讲,它不是无效的,但是名称开头带有破折号(-)的文件会给您带来很多麻烦。这是因为它与命令参数有冲突。
我个人发现很多时候问题不在于 Linux,而在于 Linux 上使用的应用程序。
以 Amarok 为例。最近我注意到我从我的 Windows 机器上复制的某些艺术家没有出现在库中。我检查并确认文件在那里,然后我注意到文件夹名称中的某些字符(以艺术家命名)用一个看起来很奇怪的正方形而不是实际字符表示。
在 shell 终端中,文件名看起来更奇怪:/Music/Albums/Einst$'\374'rzende\ Neubauten 就是一个奇怪的例子。
虽然这些文件肯定在那里,但由于某种原因,Amarok 看不到它们。我能够使用一些 shell 技巧将它们重命名为健全的版本,然后我可以使用 Musicbrainz Picard 用纯 ASCII 字符重新命名。不幸的是,在我重命名文件之前,Picard 也无法打开这些文件,因此需要一个 shell 脚本。
总的来说,这是一个棘手的领域,如果您尝试在 Windows 和 Linux 之间同步音乐收藏,其中某些文件夹或文件名包含时髦字符,这似乎会变得非常棘手。
最安全的做法是坚持仅使用 ASCII 文件名。