由于我精通Ruby,因此我将在OS/X上使用它编写一些脚本。但后来我想,也许我错过了机会。我知道更喜欢Ruby而不是Bash (或者任何兼容sh的命令语言解释器)的原因有很多,但我不知道有什么理由不这样做。直接编写shell的好处是什么?
我打算在必要时使用system
来利用系统命令。
注释:我已经知道Ruby不会一直存在,但我感兴趣的主要是技术、语义和语法标准。
说到Ruby并不总是在那里,我的意思是它不是所有*nix发行版的标准部分,不像vi
。
发布于 2010-02-27 00:06:35
除了一件事之外,shell的编程语言在所有方面都很糟糕。
管道。
shell的流水线编程语言非常震撼。
|
,&
和;
操作符,加上()
和`形成了一种简洁的小语言来描述流水线。
a & b
是并发的
a ; b
是顺序的
a | b
是一个管道,其中a馈送b
shell编程的这一部分非常重要。
可以把( a & b & c ) | tee capture | analysis
看作是一种很难用Python (或Ruby)表达的东西。您可以使用iterpipes完成大部分工作,但不是全部。
剩下的大部分你可以没有,使用Python (或Ruby),你会更快乐,更有效率。
最需要注意的是在外壳级别涉及到expr
的任何东西。一旦您开始尝试进行“计算”,您就已经脱离了shell的最佳点,您应该停止在shell中的编程,并重新考虑您正在做什么。
发布于 2010-02-27 07:02:54
Ruby有一个巨大的优势:您了解Ruby,但(我假设)您对Bash不是很了解!
就我个人而言,我使用Ruby编写复杂的脚本,使用Bash编写简单的脚本--对我来说,断点通常是实际上具有一组适当的命令行参数的任何东西--但是,我知道Bash和Ruby。
我建议您对任何足够简单的事情都使用Bash,这样您就可以事先在命令行上解决它,例如:
who | grep -i admin | cut -c10-20
--将Ruby用于其他任何事情
发布于 2010-02-27 00:08:40
Bash的核心功能是运行其他命令行应用程序。让这些程序相互交互,等等。这不是Ruby设计的目的(对吧?)
https://stackoverflow.com/questions/2342894
复制相似问题