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