文件名是否允许使用文件扩展名前面以外的点?

文件名是否允许使用文件扩展名前面以外的点?

我正在 Ubuntu 电脑上检查文件名有效性。我想检查文件扩展名是否正确。

  • 如果唯一有效的点是文件扩展名之前的点,则此检查有效:

    example.endexample -> file extension is endexample
    
  • 但是如果文件名中允许使用点,那么此检查无效:

    example.continue.endexample -> file extension is continue.endexample
    

那么,为了获得文件扩展名,在第一个点后分隔值是否足够?

答案1

文件扩展名(因此还有点)在 Linux 中没有特殊含义。按照惯例,我们将其用于.shshell 脚本、.pyPython 脚本、.cC 源文本等。此外,.doc为了与其他操作系统兼容,还会使用 等。但无论有没有其他扩展名,一切都可以正常工作。

要验证给定文件的类型,请使用以下file命令:

file somefilename

man file以获得进一步的描述。

此外,shell 将尝试执行权限中设置了执行位的所有内容,并使用文件头来决定如何执行。对于脚本,此头称为舍邦其形式为:

#!/path/to/interpreter

如果缺少 shebang,则使用的解释器/shell 与调用者相同。

答案2

这个问题很容易回答:是的,Linux 文件名中到处都允许使用点。更“糟糕”的是:Linux 和 Unix 文件名不一定有文件名中表示的扩展名。

因此,您可能会发现许多“不正确”或缺失的文件扩展名,因为与 Microsoft 系统不同,它没有文件扩展名的规则。

您可以在这里找到一般规则:Linux / UNIX:文件和目录名称的命名规则

相关内容