我对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