关于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,一开始很难,但是现在我有了一个更好的可重用代码库。

我不会推荐它作为起点!


推荐阅读

    linux里的操作命令?

    linux里的操作命令?,工作,系统,信息,地址,命令,标准,位置,目录,功能,操作,lin

    linux分辨率操作命令?

    linux分辨率操作命令?,系统,情况,分辨率,底部,状态,命令,屏幕,屏幕分辨率,

    linux命令行操作软件?

    linux命令行操作软件?,软件,工具,系统,名称,管理,工作,命令,设计,平台,标准,

    linux常见操作命令?

    linux常见操作命令?,系统,工作,信息,管理,地址,命令,目录,单位,数据,标准,lin

    红帽子linux操作命令?

    红帽子linux操作命令?,服务,系统,密码,环境,信息,通用,软件,状态,设备,命令,

    linux脚本多个命令?

    linux脚本多个命令?,系统,工作,标准,服务,命令,软件,管理,连续,电脑,设备,lin

    linux日常操作命令?

    linux日常操作命令?,工作,系统,地址,信息,命令,目录,基础,管理,操作,功能,lin

    linux脚本注释命令?

    linux脚本注释命令?,代码,系统,工作,名称,地方,脚本,命令,信息,状态,简介,lin

    脚本运行linux命令?

    脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,lin

    linux命令下写脚本?

    linux命令下写脚本?,服务,系统,环境,代码,名称,命令,脚本,发行,在线,情况,三

    go操作linux命令?

    go操作linux命令?,系统,工具,环境,软件,标准,网上,最新,信息,设备,电脑,Linux

    linux命令操作vim?

    linux命令操作vim?,系统,地址,工作,命令,模式,标准,信息,入口,连续,时间,Linu

    linux把命令变成脚本?

    linux把命令变成脚本?,系统,环境,工作,脚本,命令,信息,基础,代码,文件,变量,

    脚本调用linux命令?

    脚本调用linux命令?,代码,系统,工作,底部,脚本,位置,环境,行用,官网,标准,typ

    linux操作不了命令?

    linux操作不了命令?,系统,密码,不了,命令,位置,信息,情况,网络,地址,定期,lin

    linux运维操作命令?

    linux运维操作命令?,系统,网络,基础,标准,工具,信息,工作,命令,软件,数据,lin

    linux命令行常见操作?

    linux命令行常见操作?,系统,工作,地址,管理,信息,命令,目录,一致,基础,标准,l

    linux清空操作命令?

    linux清空操作命令?,系统,数据,命令,名称,不了,文件夹,文件,环境,回收站,目

    linux脚本命令输信息?

    linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,l

    linux上启动脚本命令?

    linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方