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

有帮助吗?

解决方案

答案是:无论什么最适合工作!

我的经验法则;

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

珀尔 - 与某种文本处理或文件处理有关的任何事情,尤其是一次性的。只需编写一个肮脏的 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 一起使用特别强大。

当您掌握了这一点时,您可以回到这里问:“狂欢后我应该学到什么脚本语言?” :-)

柔佛州

我认为这取决于您想要自动化的任务有多复杂。就我个人而言,我总是使用 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(用于配置或杂项数据)和 Getopt::Helpful(这样我就能记住选项是什么。)

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

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

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

这实际上取决于您最有兴趣学习哪种语言,大多数可以用于自动化,此外还有许多其他东西。

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

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

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

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

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

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

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

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

祝你好运

嗯,是这样的:

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

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

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

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

如果您想要简约,紧凑和快速的解决方案(比Python/Ruby快),那么 - >>求解Lua脚本语言:-)但是,LUA速度和代码紧凑型是通过Relativelly Small 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

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

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

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

只需一个接一个地编写命令,将其放入一个文件中,然后运行该文件

promp> bash file

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

我第二个 Python——强大、简单、高性能,而且……与 perl 或 bash 相比,实际上相当有趣。另外,如果您了解它,您会发现其他用途,它被用在很多项目中。不仅仅是作为一种“经典”脚本语言,以扭曲的项目为例。我想 Perl 也是如此,但我自己更喜欢 Python

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

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

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

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

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

在 Linux 上?基本上,选择你的毒药。我喜欢 Python,还有 Ruby,还有 Perl。选择一个然后就可以了。:-)

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

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

但我不推荐它作为起点!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top