为了账号安全,请及时绑定邮箱和手机立即绑定

Windows和Linux目录名中禁止哪些字符?

Windows和Linux目录名中禁止哪些字符?

慕仙森 2019-06-25 16:44:55
我知道/在Linux中是非法的,下面的内容在Windows中是非法的(我认为)* . " / \ [ ] : ; | = ,我还少了什么?不过,我需要一个全面的指南,并考虑到双字节字符.连接到外部资源对我来说很好。我需要首先使用可能包含禁止字符的名称在文件系统上创建一个目录,因此我计划用下划线替换这些字符。然后,我需要将这个目录及其内容写入一个zip文件(使用Java),因此,如果有任何关于zip目录名称的其他建议,我们将不胜感激。Windows和Linux目录名中禁止哪些字符?
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

让我们保持简单,首先回答问题。

  1. 被禁可打印ASCII字符是:

    • Linux/Unix:

      / (forward slash)
    • 窗户:

      < (less than)
      > (greater than)
      : (colon - sometimes works, but is actually NTFS Alternate Data Streams)
      " (double quote)
      / (forward slash)
      \ (backslash)
      | (vertical bar or pipe)
      ? (question mark)
      * (asterisk)
  2. 不可打印字符

    如果您的数据来自允许不可打印字符的源,那么还需要检查更多。

    注:虽然在Linux/Unix文件系统中创建文件具有文件名中的控制字符是合法的,对用户来说,处理这些文件可能是一场噩梦。.

    • Linux/Unix:

      0 (NULL byte)
    • 窗户:

      0-31 (ASCII control characters)
  3. 保留文件名

    保留下列文件名:

    • 窗户:

      CON, PRN, AUX, NUL 
      COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
      LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9

      (它们本身具有任意的文件扩展名,例如,LPT1.txt).

  4. 其他规则

    • 窗户:

      文件名不能以空格或点结尾。


查看完整回答
反对 回复 2019-06-25
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

在linux和其他与unix相关的系统中,只有两个字符不能出现在文件或目录的名称中,它们是nul。'\0'和斜杠'/'..当然,斜杠可以出现在路径名称中,从而分离目录组件。

谣言1StevenBourne(“shell”名声)是否有一个包含254个文件的目录,每一个字母(字符代码)都包含一个文件名(不包括字符代码)。/'\0';名称.当然是当前目录)。它被用来测试Bourne外壳,并经常对不小心的程序(如备份程序)造成破坏。

其他人已经讨论了Windows规则。

请注意,MacOSX有一个不区分大小写的文件系统。



1是克尼汉和派克编程实践世卫组织在第6章,测试,第6.5节压力测试中说了同样多的话:


当SteveBourne编写unix shell(后来被称为Bourne shell)时,他创建了一个由254个文件组成的目录,文件名只有一个字符,每个字节值只有一个。'\0'和斜杠,这两个字符不能出现在Unix文件名中。他使用该目录进行各种模式匹配和标记化测试。(测试目录当然是由程序创建的。)多年以来,该目录是文件树遍历程序的祸害;它对它们进行了破坏。

请注意,目录必须包含条目。...因此,它可以说是253个文件(和2个目录),或者255个名称条目,而不是254个文件。这不会影响轶事的有效性,也不会影响它所描述的仔细测试的效果。


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 2370 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信