为什么以及何时使用shell而不是Ruby

Dan*_*ark 18 ruby unix scripting

由于我熟悉Ruby,我即将使用它在OSX上编写一些内容.但后来我想,也许我错过了这条船.我知道有很多理由喜欢Ruby而不是Bash(或者任何sh兼容的命令语言解释器),但我不知道有什么理由不这样做.直接编程shell有什么好处?

我打算system在必要时使用系统命令.

注意:我已经知道Ruby并不总是存在,但我对技术,语义和句法标准感兴趣.

编辑: Ruby并不总是存在,我的意思是它不是所有*nix发行版的标准部分,不像vi.

S.L*_*ott 22

shell的编程语言对于除了一件事之外的所有东西都很糟糕.

管道.

shell的管道编程语言完全晃动.

|,&;运营商,再加上()和```形成描述管道一个整洁的小语言.

a & b 是并发的

a ; b 顺序

a | b 是一个饲料b的管道

那部分shell编程摇滚.

可以把它想象( a & b & c ) | tee capture | analysis成在Python(或Ruby)中很难表达的东西.你可以用iterpipes做很多事情,但不是全部.

剩下的大部分都可以不用,并使用Python(或Ruby),你会更快乐,更有成效.

最值得注意的是涉及exprshell级别的任何事情.一旦你开始尝试"计算",你就已经越过了shell的最佳位置,你应该停止在shell中编程并重新思考你正在做的事情.

  • @ ghostdog74:叹了口气.你不断调整定义.shell是一个分叉其他进程的进程.请让我们坚持一个过程.shell - 作为一个过程 - 是可怕的.添加使用其他进程的功能可以减少恐惧.Python - 作为一个单一的流程 - 完成shell所做的一切以及更多 - 无需添加新流程.此外,shell永远不允许类定义.shell没有Python那么多.请不要添加其他进程.它们不等同于"模块". (3认同)
  • @yar:管道很容易在Python中设置(在Ruby中很容易).但远没有这么简单. (2认同)

Sha*_*ird 6

Ruby有一个巨大的优势:你知道Ruby和(我假设)你不太了解Bash!

我个人使用Ruby为复杂的脚本和Bash简单的 - 对我来说,断点通常是什么,实际上有一组适当的命令行参数 - 但是,我知道,这两个Bash和红宝石.

我建议你使用Bash来做任何简单的事情,你可以事先在命令行上解决,例如:

who |grep -i admin |cut -c10-20 
Run Code Online (Sandbox Code Playgroud)

- 并将Ruby用于其他任何事情