在這個逼格決定人格,鄙視鏈盛行的年頭,尤爲是我們IT界,請問您今天鄙視與被鄙視的次數分別是多少?若是手中沒有一點壓箱的本事,那就只有看的份了。今天咱們也要提高下本身的格調,學習些腦洞大開的東西,學完以後跑去羣子了威嚇其餘羣友,不就是個玩嘛,走着~~!工具
提及Linux中的腳本,毋庸置疑,用得最多的確定是Shell腳本,其餘的還有Python、Ruby等,估計根本沒有人會想到其實C#也能夠。提及C#,那但是尚方寶劍版存在,它上可寫操做系統(CosmosOS、SharpOS等)下可寫應用系統,桌面程序、網站程序、嵌入式程序、其餘程序一網打盡,寫腳本?天然也是順利成章的事情了。
好的,仍是進入到本文的正式環境,本文中,咱們將介紹:
(1)、C# Shell的簡介。
(2)、編寫咱們第一個C# Shell腳本。
(3)、如何引入程序集。學習
1、C# Shell的簡介
Shell,中文意爲「殼」,它是一個提供用戶與操做系統內核之間通信的翻譯器,常見的有有圖形Shell和命令行Shell,它也是咱們除安裝操做系統外Linux首先學習的重點,我敢保證,全部的有使用過Linux的讀者都會知道它。
C# Shell,也正如它的名稱同樣,它是一個Shell,所使用的命令行語言爲C#。而事實上,它的原型是Mono項目中Tool中所提供的一個工具,它的本名爲「C#REPL」,所以想要使用它,咱們的Linux中必須已經安裝了Mono,也便是有Linux.NET的環境。
關於Linux.NET的環境搭建,我不想老生常談,仍然不懂的讀者,請移步到《Linux.NET 學習手記》系列中。全部已經搭建好Linux.NET環境的機器中,均可以經過執行命令「/bin/env csharp」執行C# Shell命令解析器。系統控制檯這時會進入到C# Shell終端(有點像Telnet鏈接的樣子)。網站
而後咱們就能夠在裏面鍵入各類各樣的命令,想要退出的時候執行「quit」便可退出回到Linux命令終端。ui
2、編寫第一個C# Shell腳本 編碼
對於平時有些Linux Shell的讀者來講,通過上一節的介紹,大概也已經知道這是怎麼回事了。對於不懂Shell的讀者,也沒關係,咱們本節就是教你們如何編寫一個C# Shell。先給各位展現一下一個「標準」的Shell是什麼格式的。spa
這裏是一個常見的Bash Shell腳本,做用就是輸出十遍的「小蝶驚鴻大法好」。一個普通的Linux Shell腳本由主要由兩個部分所構成,第一就是它的解析器聲明,也就是頭部的第一行,它用來指明這個腳本是使用哪一款的Shell解析器進行解析。因爲不一樣的Shell解析器之間各自有本身的Shell命令行,所以讓計算機可以選擇出正確的Shell解析器很是重要。另外就是Shel腳本的主程序體,因爲Shell腳本是經過解析器執行,所以它的執行方式是從本文第一行開始解析執行,並按照文本的行來逐行解析執行,所以原則上咱們是能夠像「流水帳」同樣寫程序(不考慮可維護性的話)。操作系統
下面咱們也按照這種「標準格式」也寫一個C# Shell。.net
首先咱們先新建一個文件,後綴名什麼的無所謂了,Linux中是沒有後綴名的這個概念的,而後打開並填寫上解析器的位置,也便是第一行。命令行
而後咱們就能夠在裏面跟平時用C#同樣寫上咱們的代碼了(中文注意編碼)。翻譯
保存後,在Linux添加執行權限,而後運行它(本腳本文件名字爲demo.cs)。
醬醬~!有趣的事情發生了。
3、如何引入程序集
如今咱們已經證實了C# Shell腳本的可行性,也讓各位讀者簡單學習瞭如何編寫C# Shell腳本,已經具有了初步的使用價值,但因爲解析器默認指揮引入「System」裏面的東西,所以暫時只能作一些很簡單的東西。
與其餘「單薄」的語言不一樣,C#擁有極其豐富而強大的類庫,它們纔是C#中的大部隊,在各個時刻各類場合中,咱們都須要使用到它們。如今就讓咱們來學習如何調用它們。
在Linux.NET中,程序集主要來自於兩個地方,Mono自帶的基礎庫以及咱們手動引入的第三方類庫,對於它們,咱們都會分別進行講解。
先講解基礎庫,Mono自帶的基礎庫可在Mono編譯安裝的目錄中找到它們,想要引用它們,咱們只需直接在腳本中使用「Using 命名空間」便可加入它們,其效果以下:
程序集可以自動被引入並正常使用。而對於第三方類庫,因爲它並無默認加入到引用中,所以 咱們須要手動的將這個程序集Load進來。要Load第三方程序也比較容易,只需使用「LoadAssembly("程序集的物理位置【不要dll後綴】")」而後再使用「Using 命名空間」的方式便可。
Clear,又能夠繼續玩了。
好的,本篇內容又差很少了,寫本文的目的僅僅是提供Shell腳本的多一重選擇,並非要取代Bash、Python之類的經典,各位讀者能夠在本身的機器上玩玩。有疑問的讀者或者對Linux.NET感興趣的讀者能夠關注我微博或者到「OWIN【Open Web Interface for .NET】)羣」聯繫我(Q羣號:373470340)。噢,對了,還有關於C# Shell與Bash Shell互調的問題,我尚未找到好的方法,各位讀者有啥靈感的也能夠聯繫我,謝謝。
我的博客文章對應地址:http://jhonge.net/Home/Single2/1802