有没有无效的Linux文件名?
如果我想创build一个保证不能代表文件名的string,我可以在Windows上添加下列其中一个字符:
\ / : * ? | < >
例如
this-is-a-filename.png ?this-is-not.png
有什么办法可以在Linux上将string标识为“不可能是文件”?
几乎没有限制 – 除了'/'
和'\0'
,您可以使用任何东西。 但是, 有些人认为这样做不是一个好主意。
一个空string是Linux上唯一真正无效的path名,如果只需要一个无效的名字,这个名字可能适用于你。 你也可以使用像“ ///foo
”这样的string,虽然它可以引用一个文件(“ /foo
”),但它不是一个规范的path名。 另一种可能性就像“ /dev/null/foo
”,因为/dev/null
具有POSIX定义的非目录含义。 如果你只需要不能引用常规文件的string,你可以使用“ /
”或“ .
”,因为这些都是目录。
我个人发现很多问题不是Linux,而是Linux上的应用程序。
以Amarok为例。 最近我注意到某些艺术家是从我的Windows机器上拷贝出来的,没有出现在库中。 我检查并确认文件在那里,然后我注意到,文件夹名称(以艺术家命名)中的某些字符被表示为一个奇怪的方形而不是实际的字符。
在shellterminal中,文件名看起来更奇怪:/ Music / Albums / Einst $'\ 374'rzende \ Neubauten是一个很奇怪的例子。
尽pipe这些文件确实存在,但Amarok由于某种原因无法看到它们。 我能够使用一些shell欺骗来重新命名他们为理智的版本,我可以使用Musicbrainz Picard重新命名为纯ASCII字符。 不幸的是,Picard在重新命名之前也无法打开这些文件,因此需要一个shell脚本。
总体而言,这是一个棘手的领域,如果您试图在Windows和Linux之间同步某个文件夹或文件名称包含时髦字符的音乐collections,它似乎变得非常棘手。
最安全的做法是坚持只有ASCII的文件名。