小智 62
现在是 2015 年,所以我会考虑以下几点:
内存开销
启动时间
表现
生产率
我发现如果您安装了 Ruby/Python,就没有理由使用 Bash/Shell。
并且可能安装 Ruby/Python 甚至不需要 bash 脚本(除了 busybox,一些系统工具无论如何都依赖于 Python/Perl 的存在)。
每次编写 shell 脚本时,您都是在“练习”这样做——而不是学习更强大/更有成效的东西。
为什么现在人们使用 Bash?因为这是一个可怕的、难以打破的习惯。剧本很少会在开始几分钟后“永远完成”——无论人们倾向于如何强烈地这样想。伴随着“这是这个脚本中的最后一个错误”的谬论。
结论:只有在您绝对被迫(例如~/.bashrc
,busybox)时才使用 bash/shell ,因为现在它几乎从来都不是“适合工作的工具”。
mka*_*ito 47
考虑到两者都可以处理的问题,您将希望使用最适合您的那个。归根结底,还有很多小细节,只有经验才能教你看到它们。
Bash 是一种通用脚本语言,就像 Python、Ruby、Perl 一样,但每种语言都有不同的优势。Perl 擅长文本分析,Python 声称是同类中最优雅的,Bash 脚本非常擅长“管道传输”,如果你明白我的意思,还有 Ruby ......好吧,Ruby 在很多方面都有点特别的方式。
但是,只有当您拥有大量的脚本编写经验时,它们之间的差异才真正重要。我建议您选择一种语言并将其推到极限,然后再转到下一种语言。您可以在 shell 脚本中做很多事情,这比大多数人承认的要多。任何语言都和你想要的一样难。在你用它写了几件事之后,每种语言对你来说都是“容易”的。
如果您住在 Linux 中,熟悉 shell 会很快得到回报,所以也许您想从它开始。如果您发现在 shell 脚本中无法解决或不切实际的任务,请使用其他方法。
另外,请记住,学习 shell 脚本非常简单。它的真正威力在于其他程序,如 awk、sed、tr 等。
che*_*ner 31
当我主要关注文件处理时,我使用 bash。这可能包括移动、复制和重命名文件,以及将文件用作其他程序的输入或将其他程序的输出存储在文件中。我很少编写实际检查文件内容或生成输出以写入文件的 bash 代码;我把它留给我通过 bash 启动的其他程序(我可以用 Perl 或 python 编写)。
当我主要关注从文件读取数据、以某种方式处理该数据以及将输出写入文件时,我使用 Perl 和 python。如果我发现自己使用(在 Perl 中)system
命令、反引号或(在 python 中)subprocess
模块过于广泛,我会考虑用 bash 编写脚本。另一方面,我有时会开始向 bash 脚本添加如此多的功能,最终用 Perl/python 重写它更有意义,而不是处理 bash 对变量范围、函数、数据结构等的有限(比较)支持.
我发现这个 Perl 与 Bash 分析很有用......
http://blogs.perl.org/users/buddy_burden/2012/04/perl-vs-shell-scripts.html
为方便起见,我复制了该作者的摘要:1)当 bash 是更好的发现时,以及 2)当 perl 是更好的结论时......
当 Bash 更好时...
- 工作失败
- 退出命令
- 处理作业输出行
- 这里的文件
- 文件等效项
- 文件时间戳比较
- 波浪号扩展
当 Perl 更好时...
对于大多数应用程序来说,Perl 仍然胜过 bash。我可能更喜欢 Perl 的原因包括(但不限于):
- 它会更快。主要是因为我实际上并不需要为我想做的许多事情启动新进程(basename 和 dirname 是最明显的例子,但通常 cut、grep、sort 和 wc 也都可以消除)。
- bash 中的字符串处理充其量只是基本的,整个 $IFS 的东西都非常笨重。
- shell 脚本中的条件可能是不稳定的。
- 在 shell 脚本中引用可能是一场噩梦。
- 除了简单的案例 (NPI) 之外,bash 的 case 语句还有很多不足之处。
- bash 中的数组很糟糕。bash 中的哈希(假设你的 bash 足够新,可以拥有它们)更难。
- 一旦处理文件或命令输出超出了我上面列出的简单情况,Perl 就开始真正冒烟了。
- CPAN。
因此,bash 不会很快接管 Perl。但我仍然发现,这么多年过去了,很多时候一个简单的 shell 脚本有时比一个简单的 Perl 脚本更简单。正如我所说,我欢迎所有试图说服我的尝试。但是,话又说回来,在您的工具箱中使用一些不同的工具并没有错。
小智 6
根据我的经验,bash 与 python 是开发时间和灵活性之间的权衡。通常可以在 bash 脚本中比在 python 脚本中更快地建立问题的基本解决方案。
与等效的 bash 脚本相比,Python 往往会让您更多地考虑解决方案的结构。Python 比 bash 脚本具有更强的表达能力,因此随着时间的推移,它倾向于更好地扩展和修改。总的来说,它仍然更具可读性。
Bash 更接近于文件系统,并且非常适合用于解决未明确定义的问题的初稿解决方案。出于这个原因,bash 脚本可能是一个很好的首选,它可以在更好地理解问题后将其移植到 python 中。
Bash 是一个 Unix shell,它包含一种脚本语言。它是命令处理器。你控制你如何运行命令的方式,你实际上是在运行它们。
Perl/Ruby/Python 是通用语言。
当你想要一个 shell 脚本时,你使用 Bash
如果您想要更复杂的任务或与 shell 无关。使用 Python 等。
实际上,我永远不会比较这些语言。Python 等是可移植的。你可以在任何地方运行它们。Bash 仅适用于 Unix。
Python 等拥有大量可重用的库,可解决数百万个任务。
如果你问,这几乎是一样的。“何时使用 Paint 以及何时使用 Photoshop”
对于处理电子邮件,我会再次使用 Ruby,因为它有很多可重用的库。
但最好的方法是结合 bash 和 ruby。那就对了。就像您在 ruby 中创建电子邮件处理脚本一样,bash 脚本将调用该 ruby 脚本并运行其他命令 ds。
因此,无论何时您需要命令处理器,您都可以使用 bash。您运行 unix 命令并控制它们。
虽然我的答案的主要部分没有改变,但我想指出这一点。
Bash 也是一种强大的脚本语言。对于文本处理,它可能是一个绝对合法的选择。
请阅读下面 mkaito 的评论。它们都是完全正确的。
归档时间: |
|
查看次数: |
94677 次 |
最近记录: |