Scott Davies Asked: 2009-09-05 07:34:10 +0800 CST2009-09-05 07:34:10 +0800 CST 2009-09-05 07:34:10 +0800 CST Bash shell 脚本的脚本替代方案 772 我刚刚迁移到 UNIX 工作站。从学校开始,我对 Bash shell 脚本的记忆就消失了,我发现语法非常混乱。我想知道还有哪些其他脚本语言用于自动化任务。我听说过的两个最流行的是 Perl 和 Python。 哪种脚本语言被现实世界的商店最广泛地使用? 哪种脚本语言最接近 C/C++ 语法? 是否有另一种我不知道的脚本语言? scripting unix 15 个回答 Voted Best Answer DictatorBob 2009-09-05T07:44:15+08:002009-09-05T07:44:15+08:00 在某种程度上,这是个人喜好的问题。Perl 和 Python 在受欢迎程度方面绝对是最高的。 但是,要回答您的三个问题中的两个: 我猜 bash 使用最广泛,可能其次是 perl。只是猜测,不知道是否有人做过调查。:) 那里有无数种脚本语言。:) 我的建议是 Python。它易于阅读和编写,功能非常强大,并且网络上有大量有用的资源可供学习,更不用说您可以复制和重新利用的代码了。 Michael Pobega 2009-09-05T08:05:13+08:002009-09-05T08:05:13+08:00 Perl 和 Python 显然是答案。但它们每个都用于完成不同的任务: Bash - 是最容易学习的。使用 Bash 脚本,您可以运行命令并操作输出。 Python - 第二容易学习。Python 比 Bash 更有用,因为您可以使用 Python 编写完整的程序,并且它受到社区的大力支持。Python 也非常易读,几个月后易于编辑。 Perl - 三者中最好的(用于脚本),但很容易成为最陡峭的学习曲线。具有非常好的正则表达式支持(这是它今天仍在使用的主要原因),随着时间的推移,您可能会遇到很多 Perl 脚本。Perl 的主要问题是代码的可读性——在您编写代码几个月后,您将无法弄清楚它的作用。所以你最好重磅评论。 Awk/Sed - 两者都非常有用,但都很难学习。我建议最后解决这些问题,除非你擅长模式。 关于现在学习哪一个(因为你大概都不知道它们),我会学习 Python。这是最简单和最有用的知识。 至于你的问题的答案: 哪种脚本语言被现实世界的商店最广泛地使用? 所有这些,但我想 Perl 在这里有一点优势(因为它在系统管理中使用的时间要长得多)。 哪种脚本语言最接近 C/C++ 语法? Perl 是否有另一种我不知道的脚本语言? 红宝石,Tcsh/Csh,http ://en.wikipedia.org/wiki/Interpreted_language slovon 2009-09-05T07:46:12+08:002009-09-05T07:46:12+08:00 awk 用于小型工作,python 用于多人。 Python(如果你不使用特定的 API 和其他依赖于平台的东西)有一个丰富的“标准库”,它在你使用 python 版本的所有平台上都可用。这非常好,因为您可以轻松地重复使用脚本,这意味着即使您更改平台,您的知识也是一项很好的投资。 在我们公司,我们使用 python 来编写所有的脚本,监控,... 和 java 的应用程序,我们在异构环境中很顺利。 Martin P. Hellwig 2009-09-05T07:44:32+08:002009-09-05T07:44:32+08:00 sh(bourne shell)、grep、awk 和 sed 始终是重新掌握的好东西。如果您不需要大量的文本正则表达式并且可维护性不是那么重要(并不是说不可能),那么 Perl 非常好。Python; 如果可读性对您很重要。我的首选是 Python,但所有这些工具都适用于你扔给它的大多数东西。您可能想重新考虑您的 c/c++ 语法要求,从长远来看,坚持下去对您没有帮助。 Brian Jordan 2017-02-26T08:12:35+08:002017-02-26T08:12:35+08:00 红宝石 Python Go - 一种跨平台语言,脚本被认为是Go 的强项之一。 Node.js - 参见 Grunt.js、Gulp.js。许多项目现在使用 Node.js 作为 shell 自动化工具。 Perl EBGreen 2009-09-05T07:39:04+08:002009-09-05T07:39:04+08:00 我会说 perl 和 python 可能是两个最好的选择。你也可以用 sed 和 awk 做很多事情。 David Mackintosh 2009-09-05T07:49:24+08:002009-09-05T07:49:24+08:00 如果您想从头开始学习一些东西,最好(重新)学习 bash。 除此之外,perl 和 python 现在很流行。我偏爱 perl,但自从 Perl 4 发布以来,我的 perl 脚本风格并没有太大变化。 我不知道有任何“类 c 语法”的脚本语言。 jsoverson 2009-09-05T08:29:04+08:002009-09-05T08:29:04+08:00 Perl,如果只是为了 CPAN 令人难以置信的资源(http://search.cpan.org/),请放心。在如此庞大的贡献社区中使用脚本语言的好处是,您不太可能需要自己发明一些东西。 Perl 还具有根据当前情况所需的复杂性的好处。您可以将其视为用于快速管理或单一用途脚本的简单脚本语言,但是当您想要创建更大、易于维护的应用程序(如守护程序、服务器、客户端)时,您可以使用面向对象的概念或广泛的元对象系统。 仅脚本语言之间的差异还不足以选出一个明显的赢家,但您应该主要看看找到有关您关心的主题的信息有多容易。 Perl 语法也可以惊人地接近 C,只要你能解决缺乏类型和符号的问题;当您最终了解该语言的优势时,高级 perl 使用会自然而然地出现。 对于可读性方面的反对者:您可以用任何语言编写难以阅读的代码。如果您回顾 4 个月前的代码并且无法理解它,那么您做错了什么。 ps 这篇文章充满了 CPAN 上各种管理友好模块的链接,但显然新用户只能发布一个链接,因此使用该 CPAN 链接来搜索诸如“CVS”、“SVN”、“Cron”和“Moose”之类的东西(一个广泛的对象系统) Javier 2009-09-05T11:37:23+08:002009-09-05T11:37:23+08:00 最常用:Perl,主要是出于历史原因。Python 在所有 Linux 和 BSD 发行版中广泛使用(它甚至安装在 Mac OSX 上),并且学习/编程要好得多。当然,一旦你掌握了语法,Bash 就更简单了,几乎可以在命令行上做任何事情。毕竟,它是命令行。 C 语法:有csh,但您可以轻松安装TCC并使用真正的C 作为脚本语言,从源代码编译比其他语言启动时间更短。 其他脚本语言:很多!卢阿,红宝石,JavaScript... sh1ny 2009-09-05T11:46:12+08:002009-09-05T11:46:12+08:00 您应该在适当的地方使用所有这些的组合。我真的不喜欢 perl(可读性),但它对很多事情都有好处。另一方面,Python 在系统管理方面对我来说是新事物,直到我不得不管理(并且仍然必须)一些 KVM 机器。在使用 libvirt 的 python 绑定 1 小时后,通过脚本启动、停止、保存、加载、迁移所有这些机器成为现实。 最后但并非最不重要的一点是,如果我不得不使用 perl 或 python,比方说,每晚从 mysql 服务器转储所有数据库(每个数据库都在它自己的转储文件中),将它们 tar 并将其同步到其他服务器。为什么 ?因为用 bash 编写它更快更容易:) 最后,您应该使用最适合您当前任务的任何语言,并且不要仅仅因为您最喜欢它而只使用给定的脚本语言。
在某种程度上,这是个人喜好的问题。Perl 和 Python 在受欢迎程度方面绝对是最高的。
但是,要回答您的三个问题中的两个:
我的建议是 Python。它易于阅读和编写,功能非常强大,并且网络上有大量有用的资源可供学习,更不用说您可以复制和重新利用的代码了。
Perl 和 Python 显然是答案。但它们每个都用于完成不同的任务:
关于现在学习哪一个(因为你大概都不知道它们),我会学习 Python。这是最简单和最有用的知识。
至于你的问题的答案:
哪种脚本语言被现实世界的商店最广泛地使用?
所有这些,但我想 Perl 在这里有一点优势(因为它在系统管理中使用的时间要长得多)。
哪种脚本语言最接近 C/C++ 语法?
Perl
是否有另一种我不知道的脚本语言?
红宝石,Tcsh/Csh,http ://en.wikipedia.org/wiki/Interpreted_language
awk 用于小型工作,python 用于多人。
Python(如果你不使用特定的 API 和其他依赖于平台的东西)有一个丰富的“标准库”,它在你使用 python 版本的所有平台上都可用。这非常好,因为您可以轻松地重复使用脚本,这意味着即使您更改平台,您的知识也是一项很好的投资。
在我们公司,我们使用 python 来编写所有的脚本,监控,... 和 java 的应用程序,我们在异构环境中很顺利。
sh(bourne shell)、grep、awk 和 sed 始终是重新掌握的好东西。如果您不需要大量的文本正则表达式并且可维护性不是那么重要(并不是说不可能),那么 Perl 非常好。Python; 如果可读性对您很重要。我的首选是 Python,但所有这些工具都适用于你扔给它的大多数东西。您可能想重新考虑您的 c/c++ 语法要求,从长远来看,坚持下去对您没有帮助。
我会说 perl 和 python 可能是两个最好的选择。你也可以用 sed 和 awk 做很多事情。
如果您想从头开始学习一些东西,最好(重新)学习 bash。
除此之外,perl 和 python 现在很流行。我偏爱 perl,但自从 Perl 4 发布以来,我的 perl 脚本风格并没有太大变化。
我不知道有任何“类 c 语法”的脚本语言。
Perl,如果只是为了 CPAN 令人难以置信的资源(http://search.cpan.org/),请放心。在如此庞大的贡献社区中使用脚本语言的好处是,您不太可能需要自己发明一些东西。
Perl 还具有根据当前情况所需的复杂性的好处。您可以将其视为用于快速管理或单一用途脚本的简单脚本语言,但是当您想要创建更大、易于维护的应用程序(如守护程序、服务器、客户端)时,您可以使用面向对象的概念或广泛的元对象系统。
仅脚本语言之间的差异还不足以选出一个明显的赢家,但您应该主要看看找到有关您关心的主题的信息有多容易。
Perl 语法也可以惊人地接近 C,只要你能解决缺乏类型和符号的问题;当您最终了解该语言的优势时,高级 perl 使用会自然而然地出现。
对于可读性方面的反对者:您可以用任何语言编写难以阅读的代码。如果您回顾 4 个月前的代码并且无法理解它,那么您做错了什么。
ps 这篇文章充满了 CPAN 上各种管理友好模块的链接,但显然新用户只能发布一个链接,因此使用该 CPAN 链接来搜索诸如“CVS”、“SVN”、“Cron”和“Moose”之类的东西(一个广泛的对象系统)
最常用:Perl,主要是出于历史原因。Python 在所有 Linux 和 BSD 发行版中广泛使用(它甚至安装在 Mac OSX 上),并且学习/编程要好得多。当然,一旦你掌握了语法,Bash 就更简单了,几乎可以在命令行上做任何事情。毕竟,它是命令行。
C 语法:有csh,但您可以轻松安装TCC并使用真正的C 作为脚本语言,从源代码编译比其他语言启动时间更短。
其他脚本语言:很多!卢阿,红宝石,JavaScript...
您应该在适当的地方使用所有这些的组合。我真的不喜欢 perl(可读性),但它对很多事情都有好处。另一方面,Python 在系统管理方面对我来说是新事物,直到我不得不管理(并且仍然必须)一些 KVM 机器。在使用 libvirt 的 python 绑定 1 小时后,通过脚本启动、停止、保存、加载、迁移所有这些机器成为现实。
最后但并非最不重要的一点是,如果我不得不使用 perl 或 python,比方说,每晚从 mysql 服务器转储所有数据库(每个数据库都在它自己的转储文件中),将它们 tar 并将其同步到其他服务器。为什么 ?因为用 bash 编写它更快更容易:)
最后,您应该使用最适合您当前任务的任何语言,并且不要仅仅因为您最喜欢它而只使用给定的脚本语言。