珍爱生命,慎用shell
文章目录
#引子 使用linux有几个年头了,老实说,我不能想象没有shell的世界,那些精巧灵活的工具(管道/find/grep/sed/vim…)让琐事变得容易。同时我也害怕shell脚本满天飞的世界,还好大多时候我们在shell都是敲些短命令。就像害怕perl/php/javascript脚本满天飞的世界,尽管它们确实满天在飞了。。。。它们都有独到的设计,对特定问题的解决也出类拔萃,可是就语法本身而言读写起来真的不是很愉快的体验
bash的语法
相比于shell中各类工具的灵活的强大,bash语法的丑陋简直令人咋舌
这是一种典型的quick and dirty
,各种临时方案风格的设计,一致性很糟糕
如果仅是使用单行命令还好,一旦试图在bash中变大逻辑,写脚本,就很痛苦了,痛苦程度要比写perl好些
带着这种既爱又恨的心情,每当看到有助于书写shell的工具,都会留意。分享一些还不错的
shellcheck
a static analysis tool for shell scripts
如果你非要用bash编程,可以试试fish,对bash的许多恶心语法做了改进,换句话说,如果你是新手,且使用fish,你需要注意它的语法和bash有不少差异,这意味着你照着书本敲的指令很可能无法运行
python
已经越来越多的系统管理员,使用python来运维系统,尤其是ansible这样的神器发布之后
对于日常的系统管理任务,python也基本都能胜任,尤其是需要写复杂逻辑的时候,bash的&{}>.[[=]]
会让你发疯的,快投入python怀抱吧
我之前写的这篇文章把我日常与系统打交道用到的工具罗列了一下:Python与系统日常管理
如果你喜欢shell,又为其语法所累,我也是这样,我现在的偏好是:以python的方式使用shell,也许你也可以试试
shellpy
这是我今天早上醒来逛github看到的一个东西
日常而言,对于具体的任务,我们都习惯在shell里直接敲命令,好比git add common
/ack class --python
/http GET www.google.com
如果这些命令都在python用subprocess写可能会比较费事,即便使用sh
这样的神器,写起来感觉还是需要看看文档,有没有一种能让我们在python更自然地书写bash的方式呢,这就是shellpy项目的初衷,它实际上是包装了subprocess
这样一来,我们能自然地使用bash中各类神器,同时使用python来控制逻辑
整个世界一下变得干净而清爽
###上手 上手很简单,看一下官方的示例就好了
|
|
执行它:shellpy example/git.spy
如果你熟悉ipython,你可能觉得这不就是把ipython的!
换成`么。哈哈,我也这样觉得,不过好处在于,这样我们脱离终端,可以在python脚本里写bash啦,而不只是在ipython里
###import_from_python 我们也可以在pyhton代码中直接调用spy文件,参考:import_from_python
###更多demo example
资源
文章作者 种瓜
上次更新 2016-04-10