58

如果我想创建一个保证不代表文件名的字符串,我可以在 Windows 上将以下字符之一放入其中:

\ / : * ? | < >

例如

this-is-a-filename.png

?this-is-not.png

有没有办法在 Linux 上将字符串标识为“不可能是文件”?

4

4 回答 4

48

几乎没有任何限制——除了'/'and '\0',你可以使用任何东西。但是,有些人认为允许这么大的灵活性并不是一个好主意。

于 2009-08-21T10:04:47.060 回答
22

空字符串是 Linux 上唯一真正无效的路径名,如果您只需要一个无效名称,它可能对您有用。您也可以使用像“ ///foo”这样的字符串,它不是规范路径名,尽管它可以引用文件(“ /foo”)。另一种可能性是类似于“ /dev/null/foo”,因为/dev/null具有 POSIX 定义的非目录含义。如果您只需要不能引用常规文件的字符串,您可以使用“ /”或“ .”,因为它们始终是目录。

于 2009-08-21T16:46:17.507 回答
1

从技术上讲,它不是无效的,但是名称开头带有破折号(-)的文件会给您带来很多麻烦。这是因为它与命令参数有冲突。

于 2021-04-02T19:35:38.660 回答
-5

我个人发现很多时候问题不在于 Linux,而在于 Linux 上使用的应用程序。

以 Amarok 为例。最近我注意到我从我的 Windows 机器上复制的某些艺术家没有出现在库中。我检查并确认文件在那里,然后我注意到文件夹名称中的某些字符(以艺术家命名)用一个看起来很奇怪的正方形而不是实际字符表示。

在 shell 终端中,文件名看起来更奇怪:/Music/Albums/Einst$'\374'rzende\ Neubauten 就是一个奇怪的例子。

虽然这些文件肯定在那里,但由于某种原因,Amarok 看不到它们。我能够使用一些 shell 技巧将它们重命名为健全的版本,然后我可以使用 Musicbrainz Picard 用纯 ASCII 字符重新命名。不幸的是,在我重命名文件之前,Picard 也无法打开这些文件,因此需要一个 shell 脚本。

总的来说,这是一个棘手的领域,如果您尝试在 Windows 和 Linux 之间同步音乐收藏,其中某些文件夹或文件名包含时髦字符,这似乎会变得非常棘手。

最安全的做法是坚持仅使用 ASCII 文件名。

于 2014-05-16T12:49:40.467 回答