我正在 Ubuntu 电脑上检查文件名有效性。我想检查文件扩展名是否正确。
如果唯一有效的点是文件扩展名之前的点,则此检查有效:
example.endexample -> file extension is endexample
但是如果文件名中允许使用点,那么此检查无效:
example.continue.endexample -> file extension is continue.endexample
那么,为了获得文件扩展名,在第一个点后分隔值是否足够?
答案1
文件扩展名(因此还有点)在 Linux 中没有特殊含义。按照惯例,我们将其用于.sh
shell 脚本、.py
Python 脚本、.c
C 源文本等。此外,.doc
为了与其他操作系统兼容,还会使用 等。但无论有没有其他扩展名,一切都可以正常工作。
要验证给定文件的类型,请使用以下file
命令:
file somefilename
看man file
以获得进一步的描述。
此外,shell 将尝试执行权限中设置了执行位的所有内容,并使用文件头来决定如何执行。对于脚本,此头称为舍邦其形式为:
#!/path/to/interpreter
如果缺少 shebang,则使用的解释器/shell 与调用者相同。
答案2
这个问题很容易回答:是的,Linux 文件名中到处都允许使用点。更“糟糕”的是:Linux 和 Unix 文件名不一定有文件名中表示的扩展名。
因此,您可能会发现许多“不正确”或缺失的文件扩展名,因为与 Microsoft 系统不同,它没有文件扩展名的规则。
您可以在这里找到一般规则:Linux / UNIX:文件和目录名称的命名规则