您可以使用任何所需的文件扩展名吗(适用于 Unix、Linux、Windows)?

您可以使用任何所需的文件扩展名吗(适用于 Unix、Linux、Windows)?

我想创建一个名为“message”的文件,其中只包含文本。如果我决定调用它,系统如何知道使用哪个程序来读取它:

  • 消息.txt?
  • 消息.dat?
  • 消息.enc?
  • 消息.cpz?
  • 消息.asdfasdf?
  • 消息.abcdefghijklmnopqrstuvwxyz?
  • 消息.这是_如此_随机?
  • 或者仅仅是“消息”,没有扩展名?

我对纯文本文件的情况感到疑惑,但是包含视频和音频的文件怎么办呢?

答案1

Linux (/Ubuntu) 不像 Windows 那样依赖文件扩展名。每个文件都有一部分内容,用于标识其本身。为了显示什么是随机文件,我们使用命令file。一些随机示例:

$ file *
Aptana Studio 3:       directory
Create ubuntu live cd: ASCII English text, with very long lines
1.txt:      empty
gedit_open: Bourne-Again shell script text executable

您还可以mimetype从命令行找到:

$ file --mime-type -b 1.txt 
application/x-empty
$ file --mime-type -b gedit_open 
text/x-shellscript

我们确实有一个~/.local/share/applications/mimeapps.list 可以将程序关联到扩展的地方。您可以使用内部设置open with这些properties设置这些程序,也可以使用命令行设置它们(请参阅https://askubuntu.com/questions/46020/how-to-add-a-mime-type-with-a-project-created-in-quickly

因此基本上,您可以使用文件名做任何您想做的事情,但.conf如果文件名包含配置设置,我建议使用它,但这仅用于human理解。由于您通常需要execute一个文件来将其与为此 mimetype 设置的程序相关联,并且您通常将权限设置为不可执行,所以这不是问题。

答案2

一般来说是的,您可以使用任何您想要的扩展名,而且没有必要通过某个国际机构或任何东西注册文件扩展名。

但是,有些程序希望它们的文件具有特定的扩展名 - 这在图形环境中通常更重要 - 例如,打开文件对话框按扩展名过滤其内容,或者保存文件对话框可以根据用户提供的扩展名猜测以何种格式保存文件。

在 Windows 中使用任意扩展名可能会有点麻烦,因为“打开”和“保存”对话框的工作方式,但你仍然可以拥有一个扩展名为.kjhkhkj

关于“系统如何决定使用哪个程序”:你告诉它。在终端中,你调用该程序并为其指定一个文件名:

gedit message.kjhkjhkj

它将在 gedit 中打开

在 Nautilus 中,右键单击文件并选择“打开方式...”,您可以在此处指定程序。也可以使此关联永久化,以便.kjhkhkj始终使用 gedit 打开文件。

在 Windows 中,过程类似,但 Windows 更倾向于依赖已知的文件扩展名(即,在 Ubuntu 中,无论视频文件的扩展名是什么,它都会有预览缩略图,而 Windows 需要它们具有已知扩展名之一(.avi、.mov 等))。

答案3

是也不是。在 Windows 上,文件类型扩展名用于确定打开文件的方式。如果您将所有 mp3 重命名为 .tomato,Windows 将不知道如何处理它,除非您指定一个可以打开 mp3 的程序作为打开 .tomato 的默认程序,或者您专门用它打开文件。

*拒绝使用神奇数字出于同样的目的,所以他们并不真正关心扩展

答案4

此外,一些以不同方式处理文件的应用程序(如 grep)会尝试猜测文件内容,因为它们可以基于此进行不同的处理。我的 grep 示例忽略了扩展名(我曾认为纯文本 .log 是二进制文件),但一些应用程序(例如 Nautilus)会倾向于使用扩展名进行猜测。

相关内容