为什么以及何时使用shell而不是Ruby
由于我熟悉Ruby,因此我将在OSX上使用它编写一些脚本。 但后来我想,也许我错过了这条船。 我知道很多理由更喜欢Ruby而不是Bash(或任何sh兼容的命令语言解释器),但我不知道没有任何理由。 直接编写shell的好处是什么?
我打算在必要时利用系统使用system
命令。
注意:我已经知道Ruby不会一直存在,但我主要对技术,语义和语法标准感兴趣。
编辑:由Ruby不总是在那里,我的意思是它不是所有* nix发行版的标准部分,不像vi
。
除了一件事之外,shell的编程语言对所有人都是可怕的。
管道。
shell的管道编程语言完全是岩石。
|
, &
和;
运算符plus ()
和```形成了一个用于描述管道的简洁语言。
a & b
是并发的
a ; b
a ; b
是顺序的
a | b
a | b
是饲料b的管道
shell编程的那部分很有用。
想想( a & b & c ) | tee capture | analysis
( a & b & c ) | tee capture | analysis
( a & b & c ) | tee capture | analysis
是一种很难在Python(或Ruby)中表达的东西。 你可以用iterpipes做很多事情,但不是全部。
其余大部分你可以不用,并使用Python(或Ruby),你会更快乐,更高效。
最expr
是在shell级别涉及expr
任何东西。 只要你开始尝试做“计算”,你已经离开了shell的甜蜜点,你应该停止在shell中编程,并重新思考你在做什么。
Ruby有一个巨大的优势:你知道Ruby和(我认为)你不知道Bash是那么好!
我个人使用Ruby来代表复杂的脚本,Bash使用简单的代码 - 对我来说,断点通常是任何事实上都有一组适当的命令行参数 - 但是,我知道Bash和Ruby。
我建议你使用Bash来处理足够简单的事情,以便事先在命令行中完成它,例如:
who |grep -i admin |cut -c10-20
- 用Ruby来做其他事情
bash中的核心功能是运行其他命令行应用程序。 让这些程序彼此交互等等。这不是Ruby设计的目标(对吧?)。
链接地址: http://www.djcxy.com/p/71.html上一篇: Why and when to use shell instead of Ruby
下一篇: Move the most recent commit(s) to a new branch with Git