为什么 Linux 将 C# .cs 文件识别为 C++ 源文件?

为什么 Linux 将 C# .cs 文件识别为 C++ 源文件?

我对c#源文件使用file命令,linux认为这是一个c++文件。这是什么原因呢?

答案1

查看该file命令的手册页:

$ 人文件

...

文件测试每个参数以尝试对其进行分类。共有三组测试,按以下顺序执行:文件系统测试,魔法测试, 和语言测试。成功的第一个测试会导致打印文件类型。

这是第三次测试(语言测试)file执行的操作是将此文件分类为 C++ 文件。

一旦文件确定了文本类型文件中使用的字符集,它将尝试确定文件是用什么语言编写的。语言测试查找可能出现在文件前几个块中任何位置的特定字符串(参见 #include )。例如,关键字 .br 表示该文件很可能是 troff(1) 输入文件,就像关键字 struct 表示 C 程序一样。这些测试的可靠性不如前两组,因此最后进行。语言测试例程还测试一些杂项(例如 tar(1) 档案)。

C# 文件与 C++ 文件最匹配,因此file“猜测”.cs 文件是 C++ 文件。

例子

$ more blah.cs
// A Hello World! program in C#.
using System;
namespace HelloWorld
{
    class Hello
    {
        static void Main()
        {
            Console.WriteLine("Hello World!");

            // Keep the console window open in debug mode.
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }
}

检查file

$ file blah.cs
blah.cs: ASCII C++ program text

相关内容