在Linux,Windows和OS-X的跨平台文件名中哪些字符是安全的

马丁·乌丁

目前,YYMMDD-NAME+PAGE大多数文件都使用一个名称。NAME已将空格转换为下划线。

我想使用YYYY-MM-DD日期格式,但是我不确定如何将其与名称分开。-如果名称以数字开头,则A看起来很奇怪。如果使用_,则它与表示空格的下划线冲突。

可以在此处使用的文件名中哪些字符是合理安全的?我使用的是Linux,但我可能会与其他人共享文件(Windows 7,Mac OS X)。

红砂砖

概括:

  • Windows:除ASCII的控制字符和 \/:*?"<>|
  • Linux,OS-X:除null或 /

在所有平台上,最好避免使用不可打印的字符,例如ASCII控制字符。

视窗

在Windows中,Windows资源管理器不允许使用控制字符,或者\/:*?"<>|您可以使用空格。如果使用空格,则从命令行使用时通常必须用引号引起来(但据我所知,GUI应用程序不受影响)。Windows文件系统(例如NTFS)显然使用文件名存储编码,但是UTF-16是标准的。

Windows的某些部分区分大小写,其他部分不区分大小写。在Windows NTFS文件系统上创建不同的文件名(如“ Ab”和“ ab”)很容易。这些名称是指包含不同单独内容的单独文件。但是,尽管Windows命令提示符将使用愉快地列出两个文件dir,但是您不能使用诸如之类的命令轻松地访问或操作其中一个文件type见下文。

Linux,OS-X

/我相信,在Linux和OS-X中,只禁止可打印的ASCII集。某些字符(如shell的元字符*?!)会在命令行中引起问题,并要求文件名用适当的引号引起来或转义。

诸如ext2,ext3之类的Linux文件系统是字符集不可知的(我认为它们或多或少地将其视为字节流-只能为空,并且/被禁止)。这意味着您可以使用UTF-8编码存储文件名。我相信要由外壳程序或其他应用程序知道使用哪种编码来正确转换文件名以进行显示或处理。

结论

因此,您可能可以安全地使用类似的内容(如果输入起来不是那么困难)


Windows中的区分大小写

C> dir /B
Ab
aB
аB

C> type Ab
b
b

C> type aB
b
b

C> type аB
unicode homograph

请注意,我们无法键入第二个文件的内容,Windowstype命令仅返回Ab的内容。第三个文件也将不同于Linux上的aB。

(Windows 10 NTFS)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.NET Core中的跨平台文件名处理

Windows,Mac OS X和Linux用什么语言编写?

Mac OS X和Linux中的安全字符串函数

Windows,Linux,MacOS X的跨平台脚本

在OS X上使用cgo到Linux和Windows进行1.5交叉编译

在Go中使用Windows DLL库,针对Linux和Mac OS X编译

与GTK和Qt与Windows和OS X的集成方式相比,它们如何与Linux集成?

比较文件名和bash中的字符串

在Linux和Windows中与C#集成的跨平台C ++

Mac OS库文件名中“ .1”,“ @”和“ *”的含义

Azure Kubernetes服务-如何选择应在节点上设置哪些容器(Windows或Linux)和OS?

在Linux中批量删除文件名中的特殊字符

Linux中文件名中的字符串替换

Linux:如何删除文件名长度超过X个字符的所有文件?

iOS或OS X上的文件名上哪些字符是非法的?

在Linux终端中查找和删除文件名中包含相同字符串的文件

如何在Windows cmd中重命名文件名时忽略文件名开头的字符?

Windows,Linux和OS X上开箱即用的USB驱动器文件系统是什么?

在Linux和Windows中,文件名的编码是什么?

OS X下文件名的无效字符是什么?

将文本文件中的Linux URI编码的文件名和路径转换为Windows路径

如何在Linux中连续创建带有特殊字符(如()和空格)的文件名?

OS X文件系统异常:“ ghost'?' 在文件名和意外的符号链接中

在Windows中从文件名中批量删除特殊字符

您可能需要适当的加载程序才能在Windows和Webpack上的Windows上加载此文件,而在Linux和Mac OS中则不然

Windows中的批处理文件名和行数

Windows文件名在Linux中显示损坏的字符

文件名和路径中的特殊字符

未安装 mac OS X 的旧 mac-book 4.1 上的双引导 Linux 和 Windows