在Unix中提供文件名是否有任何限制?

时间:2014-02-13 05:08:07

标签: variables unix scheduled-tasks filenames

我们正在使用crontab来安排作业,并且它没有选择具有[或]或¿的处理文件。提供文件名是否有任何限制,或者这些字符在UNIX中意味着什么?有没有像这样的其他变量我们不应该在文件名中使用?提前谢谢。

2 个答案:

答案 0 :(得分: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。
  9. 中创建demo.txt目录

    Linux / UNIX:保留字符和单词

    避免在文件名中出现以下字符:

    /
    >
    <
    |
    :
    &
    

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

    如果您可以避免文件名中的空格,那将是一件好事。它将使您的脚本编写更加轻松。

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

答案 1 :(得分:0)

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