当前位置:首页> 正文

关于linux:哪种脚本语言是最好的?

关于linux:哪种脚本语言是最好的?

Which Scripting language is best?

要在Linux平台上编写用于流程自动化的脚本,哪种脚本语言会更好? Shell脚本,Perl或Python还是其他? 我是所有人的新手。 所以,我只是在考虑去哪一个?


答案是:最适合的工作!

我的经验法则;

Bash-简短的脚本,可能需要for循环才能重复执行某些操作。

Perl-与某种文本处理或文件处理有关的任何事情,特别是如果已关闭的话。只是做一个肮脏的讨厌的Perl脚本并完成它

Python-如果要重新执行某项操作或类似的操作。然后,至少您有机会重用脚本。


选择所有这三个选项,从bash / awk / sed加上fileutils(grep,find等)开始,然后在perl和python的抽象层次结构中向上移动。

这样,您将可以自己决定最适合您的需求。我说从bash和朋友开始,因为它们无处不在,有些机器不会安装perl或python,在那里您会感到无助,尤其是在传统的unix领域(例如,不是Linux)


当选择一种脚本语言来帮助自动化您的linux / unix环境时,我认为最重要的是...您的替代品:-)

我的意思是下一个/其他可能需要维护脚本的系统管理员。我目前在Unix领导者是真正的脚本负责人的环境中工作,但是他主要限制自己使用bash,并附带了一些perl和Windows vbscript以求好运。至少它迫使我重新整理我的perl。

在同意这里的其他评论的同时,我的建议是掌握bash-在大多数人都知道的情况下,尽可能地在bash中进行操作,并且可以维护/调试它。而且它将是最便携式的。与sed和awk一起使用特别强大。

掌握了这些内容后,您可以回到这里,问" bash之后我应该学习哪种脚本语言?" :-)

JB


我建议bash,awk和sed。

bash-http://tldp.org/LDP/abs/html/

awk- http://www.uga.edu/~ucns/wsg/unix/awk/

http://www.grymoire.com/Unix/Awk.html

sed- http://www.ce.berkeley.edu/~kayyum/unix_tips/sedtips.html

http://www.grymoire.com/Unix/Sed.html

只是一些想法。


除了极简单的脚本外,我还使用Perl。

我也'use warnings''use strict',避免反引号,将系统称为'system($command, @and_args)'。而且因为我希望它易于维护:IPC :: Run(用于管道),File :: Fu(用于文件名,临时文件等),YAML(用于配置或其他数据)和Getopt :: Helpful(所以我可以记住有什么选择。)


我认为这取决于您要自动化的任务的复杂程度。就我个人而言,我一直都使用shell脚本,它使您可以调用awk,sed,grep,find,ls,cat等,这些脚本可以组合在一起以完成使用perl或python可以实现的几乎所有功能。另一方面,如果要自动化的过程很复杂(例如,不仅是线性的步骤序列),那么您可能会发现用perl或python(甚至是ruby!)编写脚本会更快,并且使它们更易于维护。


取决于手头任务的复杂性和问题域。

Bash脚本可以快速,轻松地完成简单的系统自动化任务。对于比在文件中移动文件和运行命令更复杂的事情,我个人认为Perl是defacto sys-admin goto自动化工具排在第二位。为了更专注于代码重用和可读性/可维护性,我想将其升级到Python或Ruby。

PHP也可以用于自动执行任务,但是根据我的经验,PHP尚未被广泛用于此目的。

实际上,这取决于您对学习最感兴趣的语言,除了许多其他方面,大多数语言都可以用于自动化。


我更喜欢shell脚本,仅用于非常小的任务。编写健壮的Shell脚本需要大量有关可能存在的陷阱的知识,而这只能通过实践来学习。但是即使学习基础知识也可以大大提高您的生产力!

如果需要复杂的逻辑,通常使用Python。复数是指-statements =)包含两个以上的内容

Perl可以满足其最初的目的,但请注意,您学到的许多方法不适用于其他任何地方。

Python和Ruby大致相当。我建议您很好地学习其中之一,并查看另一本教程。我更喜欢Python,但实际上归结为个人喜好。

总结:学习shell脚本的基础知识。至少要了解Python或Ruby。


我一直都在推荐Python。应该可以做任何事情。对于小任务,我使用shell脚本。


好吧,就像这样:

Perl不是最用户友好的脚本语言,但是它具有CPAN(综合Perl存档网络),其中包含成千上万个实现几乎您可能想到的任何内容的库,而Perl在文本处理方面确实非常强大。缺点是perl代码很难维护(如果您不太了解的话)。

Python是一种脚本语言,在脚本编写人员中越来越受欢迎。它没有像CPAN这样的社区(尚未),但是它更具可读性,并且更易于维护。它和perl一样快。

Ruby是脚本语言的最新趋势。 Ruby是完整的OOP,这意味着一切都是对象。它的优点是代码可读性强,如果您是初学者,则非常容易学习。主要缺点是它的执行速度,即s * x。


我通常会说您最了解的一种可以实现所需结果的方法。像所有宗教战争一样,在学习了大量的语言之后,您会意识到您可以使用大多数语言来做大多数事情(请注意,我确实讲得最多)。我使用Perl。它可能不像Python或Ruby那样最新,但它确实具有CPAN的大量库支持。而且我还没有找到我无法做的任何事情。当我这样做时,我将研究其他语言,以找出哪种语言可以弥补这一空白。

如果我今天开始,也许我会选择Python或Ruby,但是我对它们的了解还不足以做出判断。您的任何朋友/同事都知道脚本语言吗?这可能会极大地帮助您,因为学习新语言时的支持非常重要。

祝好运


如果您想要简单,紧凑和快速的解决方案(比Python / Ruby更快),请->选择LUA脚本语言:-)
但是,Lua速度和代码紧凑性是通过相对较小的Lua语言核心实现的,因此,如果您想要"包含电池"(又称"大型"标准库),那么Lua不适合您。否则,来自C / C ++世界的家伙非常喜欢Lua的速度:-)

ps。

Lua vs Ruby 1.9基准测试(您也可以查看Lua Vs Python 3):

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv


这取决于您要执行哪种类型的自动化(如正在测试自动修改),建议使用Perl,因为Perl是通过CPAN(在线Perl模块清单)提供的功能强大的扩展模块。如果您只需要方便的工具来完成一个简单的源文件,awk将非常方便。如果您打算使用脚本来自动化大型项目,则Perl是具有更多功能的更好选择。
同样,Python从一开始就被设计为一种面向对象的语言。 Perl 5增添了一些O-O功能,但在我看来,这是一个笨拙的改进。 Python具有用于多重继承,多态性和封装的良好实现的o-o功能。总而言之,在我看来,Python在大多数应用程序中都占据着Perl的主导地位,除了相当短的shell脚本类型的应用程序外,它们在总体上具有可比性。


只需一个接一个地编写您的命令,将其放入文件中,然后使用

1
promp> bash file

您将拥有第一台自动化设备。然后了解bash变量,循环和控制结构。


与Perl或bash相比,我第二个Python-功能强大,简单,高效,并且...实际上很有趣。另外,如果您知道它,您还会发现其他用途,它在很多项目中都已使用过。
而不只是作为一种"经典"脚本语言,例如扭曲项目。我猜对Perl也是如此,但是我自己更喜欢Python的数量级

底线虽然就像已经说过的一样,但是请确保您拥有正确的工作工具...


如果我必须选择一个,那就必须是AWK。它是轻量级的,学习曲线很小,并且具有许多有用的功能,例如index和substr。


如果您打算使用一个简单的脚本程序来"控制"另一个(当然是命令行)程序,那么您应该查看Tcl / Tk,尤其是它的方言所期望的-它们很简单并且面向该目标-这样做很容易创建一个控制ftp的脚本,甚至对它们执行su!

Awk非常适合处理文本文件-不如perl强大,但更加简单明了(并且没有可怕的语法)。

当然,您的里程可能会有所不同,所以我想最好的答案是问您:您想为什么编写脚本?然后:您是否熟悉任何语言脚本?这些问题的答案将根据每个人的利弊及其主要目标,为您提供应使用的脚本语言。


取决于您要做什么,我会定期使用所有这些:

  • 使用Shell可以简单地批处理带有循环或if语句的命令。
  • 我在嚼文件并做一些文本替换之类的事情时使用Perl。
  • Python何时需要更多逻辑。

在* nix下,您应该使用正确的工具进行正确的工作,这对于初学者来说可能很难,因为要学习的东西很多(作为* nix用户大约15年后,我仍然会发现新事物)。我的建议是快速查看所有语言,看看它们能做什么,然后开始使用shell来处理所有内容,当脚本变得笨拙时,将它们移至其他语言。


在Linux上?基本上选择你的毒药。我喜欢Python,其他Ruby,还有Perl。选一个去。 :-)


我会说Python-它具有很高的可读性,非常简单(没有花括号,关键词尽可能接近英语,等等),并且您可以在其中执行几乎所有操作,从简单到非常复杂的事情。它也很流行并且很有趣。


这听起来有些奇怪,我使用bash已有10多年了。我已经开始使用PHP5,一开始很难,但是现在我有了一个更好的可重用代码库。

我不会推荐它作为起点!


展开全文阅读

相关内容