English 中文(简体)
哪种脚本语言最好?[已关闭]
原标题:
  • 时间:2008-09-16 08:47:52
  •  标签:

对于在Linux平台中编写进程自动化脚本,哪种脚本语言会更好?Shell脚本、Perl或Python,或者还有其他东西吗?我对他们都是新手。那么,我只是在想该选哪一个?

最佳回答

答案是:什么最适合这份工作!

我的经验法则;

Bash-对于可能需要for循环来重复执行某些操作的短脚本。

Perl-与某种文本处理或文件处理有关的任何事情,尤其是在一次性处理的情况下

Python-如果这是你可能想再次做的事情或非常类似的事情。那么至少你有机会重用脚本。

问题回答

针对这三种方法,从bash/awk/sed加上fileutils(grep、find等)开始,然后使用perl和python向上移动抽象层次。

这样你就可以自己决定哪一个最适合你的需求。我说从bash和friends开始,因为它们无处不在,有些机器不会安装perl或python,你会在那里感到无助,尤其是在传统的unix领域(即不是linux)

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

我指的是可能需要维护您的脚本的下一个/其他系统管理员。我目前工作的环境是,Unix的主要负责人是一个真正的脚本负责人,但他主要限制自己使用bash,并加入了一些perl和windowsvbscript以获得好运。至少它迫使我重新学习perl。

虽然我同意这里的其他评论,但我的建议是掌握bash——正如大多数人所知,尽可能多地使用bash,并可以维护/调试它。它将是最便携的。与sed一起使用&;awk特别强大。

当你掌握了这些知识后,你可以回到这里问“bash之后我应该学习什么脚本语言?”:-)

JB公司

除了极其简单的脚本之外,我还将Perl用于任何事情。

我还使用警告用严格的避免回溯,将系统调用为系统($command,@and_args)。因为我喜欢它是可维护的:IPC::Run(用于管道)、File::Fu(用于文件名、临时文件等)、YAML(用于配置或其他数据)和Getopt::Helpful(这样我就可以记住选项是什么了)

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

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

Bash脚本对于简单的系统自动化任务来说既快又脏。对于比移动文件和运行命令更复杂的事情,我个人认为Perl是下一个defactosys-admin-goto自动化工具。为了更加关注代码重用和可读性/可维护性,我想将其提升到Python或Ruby。

PHP也可以用于自动化任务,但根据我的经验,它并没有被广泛接受。

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

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

如果我需要复杂的逻辑,我通常使用Python。我所说的复数是指任何有两个以上if语句的事物=)

Perl对于其最初的目的来说是可以的,但请注意,您学习的许多perlism在其他地方都不适用。

Python和Ruby大致相当。我建议你好好学习其中一个,并查看另一个的教程。我更喜欢Python,但这实际上取决于个人喜好。

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

If you want minimalistic, compact and fast solution (faster than Python/Ruby) then -> go for LUA scripting language :-) However Lua speed & code compactness is achieved by relativelly small Lua language core, so if you want "batteries included" (aka. very big "standard" libraries) then Lua is not for you. Otherwise, guys who come from C/C++ world very enjoys Lua speed :-)

附笔

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

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

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

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

如果我从今天开始,也许我会选择Python或Ruby,但我对它们的了解不够,无法做出判断。你的朋友/同事知道脚本语言吗。这可能会对你有很大帮助,因为学习一门新语言时的支持非常重要。

祝你好运

嗯,是这样的:

Perl不是最用户友好的脚本语言,但它有CPAN(Comprehensive Perl Archive Network),它包含数千个库,几乎可以实现你能想到的任何东西,而Perl在文本处理方面真的很强大。缺点是perl代码有点难以维护(如果您不太了解它的话)。

Python是一种脚本语言,在脚本编写者中越来越受欢迎。它还没有像CPAN那样的社区,但它更可读,也更容易维护。它和perl一样快。

Ruby是脚本语言中的最新趋势。Ruby是完全面向对象的,这意味着一切都是一个对象。它的优点是,如果你是初学者,代码可读性很强,而且很容易学习。主要的缺点是它的执行速度,有点像s*x。

That depends on which type of automation you are doing like if it is testing autoamtion Perl is suggested because Perl is much powerful extension modules via CPAN, an online Perl module inventory. If you only need a handy tool to complete a simple source file, awk is very convenient. If you are planning to use the scripts to automate a big project, Perl is a better choice with more features. Again Python was designed from the start as an object-oriented language. Perl 5 has some o-o features added on, but it looks to me like an awkward retrofit. Python has well-implemented o-o features for multiple inheritance, polymorphism, and encapsulation.n summary, it seems to me that Python dominates Perl in most applications except for fairly short shell-script sorts of applications, and there they are roughly comparable.

如果非要我选一个,那一定是AWK。它很轻,学习曲线很小,有很多有用的函数,比如index和substr。

取决于你想做什么,我经常使用所有这些:

  • Shell for simple batching of commands with perhaps a loop or an if-statement.
  • Perl when I m munching files and do some text replacement and souch things.
  • Python when need more logic.

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

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

promp> bash file

你有了第一次自动化。然后学习bash变量、循环和控制结构。

I second Python - powerful, simple, performant, and... actually quite fun, compared to perl or bash. Also if you know it, you ll find other uses, it s used in a lot of projects. And not just as a "classic" scripting language, take for example the twisted project. That s true for Perl too I guess, but I like Python better order of magnitudes myself

不过,底线就像前面所说的那样,确保你有适合这份工作的工具。。。

如果你的目标是让一个简单的脚本程序“控制”另一个(当然是命令行)程序,那么你应该复习Tcl/Tk,尤其是它的方言预期-它们很简单,而且面向这个目标-创建一个控制ftp的脚本,甚至用它们做su都很容易!

处理文本文件非常好——没有perl那么强大,但更简单明了(而且没有糟糕的语法)。

当然,你的里程数可能会有所不同,所以我想最好的答案是问你:你想写剧本是为了什么?然后:你熟悉任何语言脚本吗?根据每个问题的优缺点及其主要目标,这些问题的答案将为您指明应该使用的脚本语言。





相关问题