登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 617|回复: 0

开发使用C#给Linux写Shell脚本

[复制链接]

 成长值: 35695

8169

主题

7094

帖子

6831

现金

黑狼创办人

Rank: 12Rank: 12Rank: 12

积分
6831
发表于 2017-10-13 04:52:02 | 显示全部楼层 |阅读模式 来自 美国
fcznsCsZhrttE011.jpg



在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了。今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之后跑去群子了威吓其他群友,不就是个玩嘛,走着~~!


说起Linux中的脚本,毋庸置疑,用得最多的肯定是Shell脚本,其他的还有Python、Ruby等,估计根本没有人会想到其实C#也可以。说起C#,那可是尚方宝剑版存在,它上可写操作系统(CosmosOS、SharpOS等)下可写应用系统,桌面程序、网站程序、嵌入式程序、其他程序一网打
尽,写脚本?自然也是顺利成章的事情了。


rAp0opO0294K9K22.jpg



好的,还是进入到本文的正式环境,本文中,我们将介绍:


(1)C# Shell的简介。


(2)编写我们第一个C# Shell脚本。


(3)如何引入程序集。


C# Shell的简介

Shell,中文意为“壳”,它是一个提供用户与操作系统内核之间通讯的翻译器,常见的有有图形Shell和命令行Shell,它也是我们除安装操作系统外Linux首先学习的重点,我敢保证,所有的有使用过Linux的读者都会知道它。
   
C# Shell,也正如它的名称一样,它是一个Shell,所使用的命令行语言为C#。而事实上,它的原型是Mono项目中Tool中所提供的一个工具,它的本名为“C#REPL”,因此想要使用它,我们的Linux中必须已经安装了Mono,也即是有Linux.NET的环境。


所有已经搭建好Linux.NET环境的机器中,都可以通过执行命令“/bin/env csharp”执行C# Shell命令解析器。系统控制台这时会进入到C# Shell终端(有点像Telnet连接的样子)。


W3IwGY0f95FiH9f3.jpg



然后我们就可以在里面键入各种各样的命令,想要退出的时候执行“quit”即可退出回到Linux命令终端。

编写第一个C# Shell脚本
对于平时有些Linux Shell的读者来说,经过上一节的介绍,大概也已经知道这是怎么回事了。对于不懂Shell的读者,也不要紧,我们本节就是教大家如何编写一个C# Shell。先给各位展示一下一个“标准”的Shell是什么格式的。


OQcqWPNKvinv33Fj.jpg



这里是一个常见的Bash Shell脚本,作用就是输出十遍的“小蝶惊鸿大法好”。一个普通的Linux Shell脚本由主要由两个部分所构成,第一就是它的解析器声明,也就是头部的第一行,它用来指明这个脚本是使用哪一款的Shell解析器进行解析。由于不同的Shell解析器之间各自有自己的Shell命令行,因此让计算机能够选择出正确的Shell解析器非常重要。另外就是Shel脚本的主程序体,由于Shell脚本是通过解析器执行,因此它的执行方式是从本文第一行开始解析执行,并按照文本的行来逐行解析执行,因此原则上我们是可以像“流水账”一样写程序(不考虑可维护性的话)。


下面我们也按照这种“标准格式”也写一个C# Shell。


首先我们先新建一个文件,后缀名什么的无所谓了,Linux中是没有后缀名的这个概念的,然后打开并填写上解析器的位置,也即是第一行。


CD33227R97fj2M0M.jpg



然后我们就可以在里面跟平时用C#一样写上我们的代码了(中文注意编码)。


Azkf9SUK1nu1p66R.jpg



保存后,在Linux添加执行权限,然后运行它(本脚本文件名字为demo.cs)。


EttCMlMg9pmc7C77.jpg



酱酱~!有趣的事情发生了。


如何引入程序集

现在我们已经证明了C# Shell脚本的可行性,也让各位读者简单学习了如何编写C# Shell脚本,已经具备了初步的使用价值,但由于解析器默认指挥引入“System”里面的东西,因此暂时只能做一些很简单的东西。


GquG05gQldN5df00.jpg



与其他“单薄”的语言不同,C#拥有极其丰富而强大的类库,它们才是C#中的大部队,在各个时刻各种场合中,我们都需要使用到它们。现在就让我们来学习如何调用它们。  


在Linux.NET中,程序集主要来自于两个地方,Mono自带的基础库以及我们手动引入的第三方类库,对于它们,我们都会分别进行讲解。


先讲解基础库,Mono自带的基础库可在Mono编译安装的目录中找到它们,想要引用它们,我们只需直接在脚本中使用“Using 命名空间”即可加入它们,其效果如下:


KAac75n04S9TTT4a.jpg



程序集能够自动被引入并正常使用。而对于第三方类库,由于它并没有默认加入到引用中,因此  我们需要手动的将这个程序集Load进来。要Load第三方程序也比较容易,只需使用“LoadAssembly("程序集的物理位置【不要dll后缀】")”然后再使用“Using 命名空间”的方式即可。


FWbJJNr3hhN23KWb.jpg



Clear,又可以继续玩了。


内容|小蝶惊鸿






[size=1em]好书推荐 [size=1em]china-pub
《C#高级编程(第9版)》

OfFryRcW2W6oa848.jpg


C#经典名著,累计畅销16年,2009年度/2011年度全行业优秀畅销书2013年度具有技术影响力引进版图书奖TOP10。


B00yY3sFq9Sfee59.jpg



购买/图书详情点击阅读原文 #互动书城#
↓↓↓




上一篇:大数据分析方法之shell编程与爬取数据实战04
下一篇:【连载】嵌入式Linux开发教程:Linux Shell
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-4-29 08:26 , Processed in 0.058519 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表