哪种脚本语言是最好的?

为了在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,因为大多数人都知道,并且可以维护/调试。 这将是最便携的。 与sed&awk一起使用尤其强大。

当你掌握了这些知识的时候,你可以回到这里问“在bash之后我应该学什么脚本语言? 🙂

JB

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

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

我也'use warnings''use strict' ,避免反引号,系统调用'system($command, @and_args)' 。 因为我喜欢它是可维护的:IPC :: Run(用于管道),File :: Fu(用于文件名,临时文件等),YAML(用于配置或misc数据)和Getopt :: Helpful(所以我记得选项是什么。)

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

Bash脚本对于简单的系统自动化任务来说很快而且很脏。 对于比移动文件和运行命令更复杂的事情,我个人认为Perl是事实上的 sys-admin goto自动化工具。 为了更多的关注代码重用和可读性/可维护性,我想把它提升到Python或者Ruby。

PHP也可以用来自动执行任务,但是根据我的经验,这个目的并不被广泛接受。

这真的归结为你最感兴趣学习的语言,除了许多其他的东西外,大部分都可以用于自动化。

我更喜欢shell脚本只用于非常小的任务。 编写健壮的shell脚本需要大量关于可能的陷阱的知识,而这些陷阱只能通过学习来学习。 但是即使学习基础知识也会提高你的工作效率!

如果我需要复杂的逻辑,我通常使用Python。 复杂的我的意思是任何超过两个,如果-statements =)

Perl对于它的原始目的是可以的,但是要注意的是,你学习的许多Perl程序并不适用于其他任何地方。

Python和Ruby大致相同。 我建议你学习其中一个很好,看看另一个教程。 我更喜欢Python,但实际上归结为个人偏好。

总结一下: 学习shell脚本的基础知识。 至少学习Python或Ruby。

我一直在推荐Python。 它应该让你做任何事情。 对于我使用shell脚本的小任务。

我通常会说一个你最了解的人,可以达到你想要的结果。 像所有的宗教战争一样,在学习了大量的语言之后,你意识到你可以用大多数语言来做大部分的事情(注意我说的最多)。 我使用Perl。 它可能不像Python或Ruby那样最新,但是它具有来自CPAN的大量库支持。 而且我还没有发现任何我不能做的事情。 当我这样做时,我会看看其他语言,找出哪一个可以填补这个空白。

如果我从今天开始,也许我会选择Python或Ruby,但我不太了解他们做出判断。 你的任何一位朋友/同事都知道脚本语言。 这可以帮助你大量的学习一门新语言的支持非常重要。

祝你好运

这取决于你正在测试自动化的自动化类型,因为Perl是通过CPAN(在线Perl模块库存)功能强大的扩展模块。 如果你只需要一个方便的工具来完成一个简单的源文件,awk是非常方便的。 如果您打算使用这些脚本来自动化一个大型项目,那么使用更多的功能,Perl是一个更好的选择。 Python从一开始就被设计成面向对象的语言。 Perl 5增加了一些oo功能,但在我看来,这是一个尴尬的改造。 Python具有良好的多重继承,多态性和封装功能。总之,在大多数应用程序中,除了相当短的shell脚本类型的应用程序之外,Python在Perl中占据主导地位,而且它们大致相当。

那么就是这样的:

Perl不是最用户友好的脚本语言,但它有CPAN(综合Perl档案网络),其中包含几千个库,几乎可以实现任何你可能想到的东西,Perl在文本处理方面真的很强大。 缺点是perl代码有点难以维护(如果你不太清楚的话)。

Python是一种脚本语言,在脚本程序中越来越受欢迎。 它还没有像CPAN这样的社区,但它更具可读性,而且更容易维护。 它和perl一样快。

Ruby是脚本语言的最新趋势。 Ruby是完整的面向对象,这意味着一切都是一个对象。 它的好处是代码是非常可读的,如果你是初学者,学习起来相当容易。 主要的缺点是它的执行速度,这是什么* x。

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

取决于你想做什么,我经常使用他们所有的人:

  • 简单的批处理命令可能是循环或if语句的外壳。
  • Perl,当我咀嚼文件,做一些文本替换和souch的东西。
  • Python需要更多的逻辑。

在* nix下,你应该使用正确的工具进行正确的工作,这对于初学者来说很难,因为它需要学习很多东西(15年后,我仍然发现新的东西)。 我的建议是快速查看所有的语言,看看他们能做什么,然后开始使用shell来处理所有事情,当脚本变得笨重时,把它们移到别的地方。

只要一个接一个地写你的命令,把它放在一个文件里,然后运行这个文件

 promp> bash file 

你有你的第一个自动化。 然后了解bash变量,循环和控制结构。

我第二个Python – 功能强大,简单,高性能,…实际上相当有趣,比较perl或bash。 另外,如果你知道它,你会发现其他用途,它在很多项目中使用。 而不仅仅是一个“经典”的脚本语言,例如扭曲的项目。 对于Perl来说,我也是这样,但是我喜欢自己的Python

底线虽然就像已经说过beofre,确保你有正确的工具工作…

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

如果你的目标是让一个简单的脚本程序“控制”另一个(命令行,当然)程序,那么你应该回顾一下Tcl / Tk,特别是它的方言期望 – 它们很简单,面向这个目标 – 很容易创建一个控制ftp的脚本,甚至和他们做一个su!

Awk非常好的处理文本文件 – 不像perl那样强大,而且更简单直接(没有可怕的语法)。

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

如果你想简约,紧凑和快速的解决方案(比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

我会说Python – 它有一个非常高的可读性,它很简单(没有大括号,关键词尽可能接近英文等),你可以做几乎所有的事情,从简单到非常复杂的事情。 编码也很流行和有趣。

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

我不会推荐它作为一个起点,但!