【问题标题】:Which Scripting language is best? [closed]哪种脚本语言最好? [关闭]
【发布时间】:2010-09-09 09:15:18
【问题描述】:

对于在 Linux 平台上编写用于进程自动化的脚本,哪种脚本语言会更好? Shell 脚本、Perl 或 Python 或者还有其他什么?我对他们所有人都是新手。所以,我只是在考虑选择哪一个?

【问题讨论】:

  • 听起来像是一个宗教问题

标签: linux scripting


【解决方案1】:

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

我的经验法则;

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

Perl - 与某种文本处理或文件处理有关的任何事情,特别是如果它是一次性的。只需做一个肮脏讨厌的 perl 脚本就可以了

Python - 如果这是您可能想要再次执行的操作或类似的操作。那么至少你有机会重用脚本。

【讨论】:

  • 你对 Ruby 有什么看法?
  • @DavidWilliams 与 Python 相同,但速度较慢,大多数 Linux 机器上都没有安装。它的语法更友好、更漂亮。
  • 请问,您对 Groovy 有什么看法? ,我应该使用 activeperl 还是草莓 perl。谢谢。
【解决方案2】:

使用所有三个,从 bash/awk/sed 和 fileutils(grep、find 等)开始,然后使用 perl 和 python 向上移动抽象层次结构。

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

【讨论】:

    【解决方案3】:

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

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

    虽然同意这里的其他 cmets,但我的建议是掌握 bash - 在可能的情况下尽可能多地使用 bash,因为大多数人都知道,并且可以维护/调试它。而且它将是最便携的。与 sed 和 awk 一起使用特别强大。

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

    JB

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:
        【解决方案6】:

        我将 Perl 用于非常简单的脚本之外的任何事情。

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

        【讨论】:

          【解决方案7】:

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

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

          PHP 也可用于自动执行任务,但根据我的经验,它并未被广泛接受。

          这真的取决于你最感兴趣学习什么语言,最能用于自动化,除此之外还有很多其他的东西。

          【讨论】:

            【解决方案8】:

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

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

            Perl 就其最初的用途而言是可以的,但请注意,您学习的许多 perlism 不适用于其他任何地方。

            Python 和 Ruby 大致相当。我建议您好好学习其中一个,然后查看另一个教程。我更喜欢 Python,但这真的取决于个人喜好。

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

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

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

                祝你好运

                【讨论】:

                  【解决方案11】:

                  如果您想要简约、紧凑和快速的解决方案(比 Python/Ruby 更快),那么 -> 选择 LUA 脚本语言 :-) 然而 Lua 速度和代码紧凑性是通过相对较小的 Lua 语言核心实现的,所以如果你想要“包含电池”(也就是非常大的“标准”库),那么 Lua 不适合你。否则,来自 C/C++ 世界的人非常喜欢 Lua 速度:-)

                  附言

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

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

                  【讨论】:

                    【解决方案12】:

                    嗯,是这样的:

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

                    Python 是一种脚本语言,在脚本编写者中越来越流行。它还没有像 CPAN 这样的社区,但它更具可读性,并且更易于维护。它和 perl 一样快。

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

                    【讨论】:

                      【解决方案13】:

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

                      【讨论】:

                        【解决方案14】:

                        如果我必须选择一个,那一定是 AWK。它是轻量级的,学习曲线很小,并且有很多有用的功能,比如索引和子字符串。

                        【讨论】:

                          【解决方案15】:

                          取决于你想做什么,我经常使用它们:

                          • Shell 用于简单批处理命令,可能带有循环或 if 语句。
                          • Perl,当我咀嚼文件并做一些文本替换和类似的事情时。
                          • Python 需要更多逻辑时。

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

                          【讨论】:

                            【解决方案16】:

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

                            promp> bash file
                            

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

                            【讨论】:

                              【解决方案17】:

                              我第二次使用 Python - 与 perl 或 bash 相比,功能强大、简单、高性能,而且...实际上非常有趣。此外,如果您知道它,您会发现其他用途,它在很多项目中都有使用。 不仅仅是作为一种“经典”脚本语言,以扭曲项目为例。我猜 Perl 也是如此,但我自己更喜欢 Python 的数量级

                              虽然就像之前所说的那样,但要确保您拥有适合这项工作的正确工具...

                              【讨论】:

                                【解决方案18】:

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

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

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

                                【讨论】:

                                  【解决方案19】:

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

                                  【讨论】:

                                    【解决方案20】:

                                    我会说 Python - 它具有非常高的可读性,它很简单(没有大括号,关键字尽可能接近英语等),你几乎可以在其中做所有事情,从简单到非常复杂的事情.它也很受欢迎,编码也很有趣。

                                    【讨论】:

                                      【解决方案21】:

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

                                      虽然我不推荐它作为起点!

                                      【讨论】:

                                        猜你喜欢
                                        • 2011-01-11
                                        • 1970-01-01
                                        • 2011-03-05
                                        • 2013-03-24
                                        • 1970-01-01
                                        • 2013-02-08
                                        • 1970-01-01
                                        • 2011-03-12
                                        • 2016-09-07
                                        相关资源
                                        最近更新 更多