C++

為什麼 linux 將 C# .cs 文件辨識為 C++ 源文件?

  • June 7, 2018

我在ac#源文件上使用了file命令,linux以為是c++文件。這是什麼原因?

查看該file命令的手冊頁:

$ 人文件

file 測試每個參數以嘗試對其進行分類。共有三組測試,按此順序執行:文件系統測試魔術測試語言測試。第一個成功的測試會導致列印文件類型。

這是執行將這個文件歸類為 C++ 文件的第三個測試(語言測試) 。file

一旦文件確定了文本類型文件中使用的字元集,它將嘗試確定文件是用什麼語言編寫的。語言測試查找可以出現在文件前幾個塊中的任何位置的特定字元串(參見 #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

引用自:https://unix.stackexchange.com/questions/448319