使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤为是我们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

相关文章
相关标签/搜索