扩展名的文件类型错误

扩展名的文件类型错误

我有一些八度文件,以默认.m扩展名结尾。

在文件中,我将其作为 ASCII 文本获取:

file euler.m 
euler.m: ASCII text

和鹦鹉螺中的纯文本图标。

如何将.m 文件类型分配给octave/matlab?

答案1

nautilus不是这样file工作的。扩展名不是文件类型。从文件内容中检测到的 MIME 类型用于确定 MIME 类型,这就是定义符号的内容。这比 Windows 过去所做的要好,纯粹根据扩展名来决定,因为,好吧,nautilus 会向您显示一个 word 文档作为 word 文档并使用 libreoffice 打开它,无论其扩展名是 .doc 还是 .png 或。TXT。

现在,octave/matlab 脚本纯文本文件,并且由于历史原因,它们通常仅限于 ASCII 字符(如果我没记错的话,对此没有技术要求)。

因此,可能缺少的只是 m 脚本的检测魔法,它将使文件能够将这些程序文本识别为该特定语言的程序文本。

认识编程语言并不是一件小事。但这也不是不可能,因为在很多情况下,file可以很好地区分 C++ 和 Python,甚至 C 源代码。

# octave/matlab script
# we'll just look for "function"; then make sure it's at the beginning of the line, followed by one or more space, followed by a function name, followed by possibly a space followed by an equality sign
0       search/8192     function
>0      regex   \^function[[:space:]]+[_[:alpha:]]{1,30}[[:space:]]*=    Matlab/Octave Source Code
!:mime  text/x-octave

这是一个非常粗略的检查(我什至没有测试过),但它会查找 m 脚本样式的函数声明。这是我能想到的最好的启发法。

相关内容