为了在Linux平台上编写流程自动化脚本,哪种脚本语言会更好? Shell脚本,Perl或Python还是其他什么?我是他们所有人的新手。所以,我只是在考虑选择哪一个?
答案 0 :(得分:37)
答案是:无论什么最适合这份工作!
我的经验法则;
Bash - 对于可能需要for循环重复执行某些操作的短脚本。
Perl - 与某种文本处理或文件处理有关的任何事情,特别是如果它是一次性的。只做一个肮脏讨厌的perl脚本并完成它
Python - 如果您想再做一次或非常喜欢它。那么至少你有机会重用脚本。
答案 1 :(得分:9)
转到所有这三个,先用bash / awk / sed加上fileutils(grep,find等),然后用perl和python向上移动抽象层次结构。
通过这种方式,您将能够自己决定哪一个最符合您的需求。我说从bash和朋友开始,因为它们无处不在,有些机器不会安装perl或python,你会感到无助,特别是在传统的unix土地上(即不是linux)
答案 2 :(得分:8)
选择脚本语言来帮助自动化你的linux / unix环境时,我认为最重要的是......你的替代品: - )
我指的是可能需要维护脚本的下一个/其他系统管理员。我目前正在一个领先的Unix家伙是一个真正的脚本头的环境中工作,但他主要限制自己使用bash,为了好运,引入了一些perl和windows vbscript。至少它迫使我刷我的perl。
虽然同意这里的其他评论,但我的建议是掌握bash - 尽可能在bash中做,就像大多数人都知道的那样,并且可以维护/调试它。它将是最便携的。与sed&同时使用awk特别强大。
当你掌握了这些知识后,你可以回到这里问“在bash之后我应该学习哪种脚本语言?” : - )
JB
答案 3 :(得分:4)
我建议 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
只是一些想法。
答案 4 :(得分:4)
我使用Perl来处理极其简单的脚本之外的任何事情。
我也'use warnings'
,'use strict'
,避免反引号,将系统调用为'system($command, @and_args)'
。因为我喜欢它是可维护的:IPC :: Run(用于管道),File :: Fu(用于文件名,tempfiles等),YAML(用于配置或misc数据),以及Getopt ::有帮助(所以我记得选项是什么。)
答案 5 :(得分:4)
我认为这取决于你想要自动化的任务有多复杂。就个人而言,我总是使用shell脚本,这使你可以调用awk,sed,grep,find,ls,cat等,它们可以组合在一起,完成你可以使用perl或python实现的任何功能。另一方面,如果您想要自动化的过程很复杂(例如,不仅仅是线性的步骤序列),那么您可能会发现用perl或python(甚至是ruby!)编写脚本要快得多它们更容易维护。
答案 6 :(得分:3)
取决于手头任务的复杂性和问题领域。
对于简单的系统自动化任务,Bash脚本快速而且脏。对于比移动文件和运行命令更复杂的事情,我个人说Perl是 defacto sys-admin goto自动化工具的下一个。为了更多地关注代码重用和可读性/可维护性,我想把它升级到Python或Ruby。
PHP也可用于自动执行任务,但根据我的经验,它并未被广泛接受。
它真正归结为您最感兴趣的语言,除了许多其他内容之外,大多数语言都可以用于自动化。
答案 7 :(得分:2)
我更喜欢shell脚本只用于非常小的任务。编写健壮的shell脚本需要大量关于可能存在缺陷的知识,而这些缺陷只能通过实践来学习。但是学习基础知识会大大提高你的工作效率!
如果我需要复杂的逻辑,我通常使用Python。复杂的意思是指任何有两个以上if -statements =)
的东西Perl可以用于其原始目的,但请注意,您学到的许多perlism在其他任何地方都不适用。
Python和Ruby大致相同。我建议你学好其中一个并在另一个上查看教程。我更喜欢Python,但它真的取决于个人偏好。
总结:了解shell脚本的基础知识。至少要学习Python或Ruby。
答案 8 :(得分:1)
嗯,就像这样:
Perl不是最用户友好的脚本语言,但它有CPAN(Comprehensive Perl Archive Network),其中包含数千个可以实现您可能想到的任何内容的库,而Perl在文本处理方面非常强大。缺点是perl代码有点难以维护(如果你不太清楚)。
Python是一种脚本语言,在脚本编写者中越来越受欢迎。它没有像CPAN这样的社区,但它更具可读性,而且更容易维护。它和perl一样快。
Ruby是脚本语言的最新趋势。 Ruby是完整的OOP,这意味着一切都是一个对象。它的优点是代码非常易读,如果你是初学者,它很容易学习。主要的缺点是它的执行速度,有点s * x。
答案 9 :(得分:1)
我一直在推荐Python。它应该让你做任何事情。对于小任务,我使用shell脚本。
答案 10 :(得分:1)
我通常会说你最了解哪一个可以达到你想要的效果。像所有宗教战争一样,在学习了大量语言之后,你会发现你可以用大多数语言做大部分事情(注意我说的最多)。我用Perl。它可能不像Python或Ruby那样是最新的,但它确实拥有CPAN的大量库支持。我还没有发现任何我不能做的事情。当我这样做时,我将查看其他语言,以找出哪一种可以填补这一空白。
如果我今天开始,也许我会选择Python或Ruby,但我不太了解他们做出判断。您的任何朋友/同事都知道脚本语言。在学习一门新语言非常重要时,这可以大大帮助你。
祝你好运答案 11 :(得分:0)
这取决于你在做什么类型的自动化,如果它正在测试自动化Perl被建议,因为Perl是通过CPAN(一个在线Perl模块库存)强大的扩展模块。如果您只需要一个方便的工具来完成一个简单的源文件,awk非常方便。如果您计划使用脚本来自动化大项目,那么Perl是具有更多功能的更好选择。 Python从一开始就被设计为面向对象的语言。 Perl 5增加了一些o-o功能,但它看起来像是一个尴尬的改造。 Python具有良好实现的oo功能,可用于多重继承,多态和封装。总结,在我看来,Python在大多数应用程序中都支配Perl,除了相当短的shell脚本类型的应用程序,并且它们大致相当。
答案 12 :(得分:0)
如果你想要简约,紧凑和快速的解决方案(比Python / Ruby更快)那么 - >寻找LUA脚本语言:-) 然而Lua速度&代码紧凑是通过相对较小的Lua语言核心来实现的,所以如果你想要“包含电池”(又称非常大的“标准”库),那么Lua不适合你。否则,来自C / C ++世界的人非常喜欢Lua速度: - )
P.S。
Lua vs Ruby 1.9基准测试(你也可以看看Lua和Python 3):
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv
答案 13 :(得分:-1)
取决于你想做什么,我经常使用所有这些:
在* nix下你应该使用正确的工具来完成正确的工作,这对于初学者来说可能很难,因为它需要学习很多东西(作为* nix用户约15年之后我仍然会发现新的东西)。我的建议是快速查看所有语言以查看它们可以执行的操作,然后开始使用shell进行所有操作,当脚本变得笨拙时将其移动到其他位置。
答案 14 :(得分:-1)
只需一个接一个地编写命令,将其放入文件并使用
运行此文件promp> bash file
你有第一次自动化。然后了解bash变量,循环和控制结构。
答案 15 :(得分:-1)
我是第二个Python - 功能强大,简单,高效,而且......与perl或bash相比,实际上非常有趣。此外,如果你知道它,你会发现其他用途,它被用于很多项目。 而不仅仅是作为“经典”脚本语言,例如扭曲的项目。对于Perl来说,我的猜测也是如此,但我自己更喜欢Python更好的数量级别
虽然底线虽然已经说过,但确保你有合适的工具......
答案 16 :(得分:-1)
如果我必须选择一个,它必须是AWK。它很轻巧,学习曲线很小,并且有很多有用的功能,比如index和substr。
答案 17 :(得分:-1)
如果您的目标是让一个简单的脚本程序“控制”另一个(当然是命令行)程序,那么您应该查看Tcl / Tk,特别是它的方言期望 - 它们很简单并且朝向该目标 - 它是很容易创建一个控制ftp的脚本,甚至用它们做su!
awk非常适合处理文本文件 - 不像perl那样强大,但更简单直接(并且没有可怕的语法)。
当然,你的里程可能会有所不同,所以我想最好的答案就是问你:你想为什么编写脚本?然后:你熟悉任何语言脚本吗?这些问题的答案将指向您应该使用的脚本语言,根据每个人的优缺点及其主要目标。
答案 18 :(得分:-2)
在Linux上?基本上选择你的毒药。我喜欢Python,其他Ruby,还有其他Perl。选一个然后去吧。 : - )
答案 19 :(得分:-3)
我会说Python - 它具有很高的可读性,它很简单(没有大括号,关键词尽可能接近英语等)而且你可以做几乎所有的事情,从简单到非常复杂的事情。它也很受欢迎,也很有趣。
答案 20 :(得分:-4)
这听起来有点奇怪,我使用bash已超过10年了。我已经开始使用PHP5了,起初很难,但现在我有一个更好的可重用代码库。
我不建议将它作为起点!