【问题标题】:Is there any limitation in giving file name in Unix?在 Unix 中给出文件名有什么限制吗?
【发布时间】:2014-02-13 05:08:06
【问题描述】:

我们正在使用 crontab 来安排作业,它没有选择具有 [ 或 ] 或 ¿ 的文件进行处理。给出文件名或这些字符在 UNIX 中是否有任何限制?有没有像这些我们不应该在文件名中使用的其他变量?提前致谢。

【问题讨论】:

    标签: variables unix scheduled-tasks filenames


    【解决方案1】:

    以下是 Linux 和 Unix(包括 *BSD)类系统的一般规则:

    1. 所有文件名都区分大小写。所以文件名 vivek.txt Vivek.txt VIVEK.txt 都是三个不同的文件。
    2. 您可以使用大小写字母、数字、“.” (点)和“_”(下划线)符号。
    3. 您可以使用空格等其他特殊字符,但它们很难使用,最好避免使用。
    4. 简而言之,文件名可以包含除 /(根目录)以外的任何字符,它保留为路径名中文件和目录之间的分隔符。不能使用空字符。
    5. 无需使用 . (点)在文件名中。一些时间点提高了文件名的可读性。
    6. 您可以使用基于点的文件扩展名来识别文件。例如:

      .sh = Shell file
      .tar.gz = Compressed archive
      
    7. 大多数现代 Linux 和 UNIX 将文件名限制为 255 个字符(255 个字节)。但是,某些旧版本的 UNIX 系统将文件名限制为 14 个字符。
    8. 文件名在其目录中必须是唯一的。例如,在 /home/vivek 目录中,您不能创建 demo.txt 文件和 demo.txt 目录名称。但是,其他目录可能有同名的文件。例如,您可以在 /tmp 中创建 demo.txt 目录。

    Linux / UNIX:保留字符和单词

    避免在文件名中使用以下字符:

    /
    >
    <
    |
    :
    &
    

    请注意,Linux 和 UNIX 允许使用空格、、|、\、:、(、)、&、;,以及诸如 ? 等通配符。和 *,使用 \ 符号引用或转义。

    如果您可以避免文件名中出现空格,那就太好了。这将使您的脚本编写更加容易。

    我从this link 得到了答案。我只是将其粘贴在这里,以便即使该网站出现故障,也可以使用此信息。

    【讨论】:

      【解决方案2】:

      在 *nix 文件名中真正非法的唯一字符是 /(保留为目录分隔符)和 NUL(因为它是 C 字符串终止符)。其他一切都是公平的游戏,尽管各种实用程序可能会在某些字符上失败 - 通常是对 shell 具有特殊含义的字符。这些将需要引用或转义才能正确处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-21
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        相关资源
        最近更新 更多