不使用文本文件扩展名有什么缺点吗?

不使用文本文件扩展名有什么缺点吗?

我最近了解到,在类 Unix 环境中,文件扩展名(至少对于纯文本而言)通常没有意义。无论 bash 脚本的扩展名是 .sh、.log、.txt 还是 .hgfjgfdjgd,只要使用 使其可执行,它仍然可以运行chmod +x scriptname

在弄清楚了这一点之后,我慢慢地开始了(也许是不好的)练习不再使用文件扩展名。我现在编写的任何通用文本文件或脚本都没有扩展名,但一切仍像以前一样运行。

在这种情况下,我能想到的唯一使用文件扩展名的优点是组织,对您自己和他人而言都是如此(即人们将 .sh 文件识别为脚本)。但除此之外,它们目前似乎毫无用处,因为它们毫无理由地增加了额外的“复杂性”。

我的做法是不是不好?没有扩展名的文件是不是一般都会被人反对?纯文本文件的扩展名还有哪些我没发现的用途?

答案1

文件系统扩展在 Linux 内核中没有任何意义。

但是,一些应用程序(Web 服务器、编译器、编辑器、链接器)倾向于故意使用文件扩展名。您可以让gcc编译器接受某些文件名source-file(甚至bizarre.ostrange.sh)作为某些C源文件,但你需要一些技巧(-x选项)。此外,你还会让其他人感到不快。

顺便说一句,您还可以将所有文件命名为00010002等......但这不是很用户友好。

答案2

我使用文件扩展名的原因有很多。在很多情况下,这是为了避免我因不使用扩展名而导致的问题。在少数情况下,不使用扩展名会带来优势,主要是在运行程序时。

在 Unix/Linux 中,文件扩展名在执行文件时没有任何意义。这由可执行位控制。脚本语言的解释器在第一行使用感叹号路径指定,例如#!/bin/bash

对于标准目录中的可执行文件,省略扩展名是标准做法。但是,对本地编写的脚本使用扩展名也很常见。这在搜索特定脚本语言的示例或常见做法时很有用。

对于不可执行文件,扩展名可为用户和读取它们的程序提供有价值的类型信息。Web 服务器广泛使用文件扩展名来确定文件类型,从而确定要应用哪些标头。编译器和程序员依靠扩展名来确定文件类型。

某些工具会magic根据文件内容使用文件来确定文件类型。许多文件类型magic在已知位置包含值,这些值在许多情况下可用于可靠地猜测文件类型。其他工具只会打开文件,假设它是合适的文件。这允许您播放文本文件或文本编辑图片,尽管两者都不推荐。

在文件分类中,经常存在不兼容的类型,通常用扩展名表示:

  • 图片:bmp、jpeg、gif、png、tiff……
  • 视频:mpg、rm、flv、wmv……
  • 声音:mp3、ogg、wav……
  • 文档:html、txt、pdf、rtf、doc...

虽然有些工具可以处理多种格式,但其他工具会因一种或多种类型而失败。省略文件扩展名可能会导致您使用错误的工具打开某些文件。

还存在多个相关文件的情况,它们通过扩展名进行区分。例如,foobar用 编写的程序c可能来自文件foobar.cfoobar.hfoobar.o

相关内容