AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 62481
Accepted
Scott Davies
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。

  1. 哪种脚本语言被现实世界的商店最广泛地使用?
  2. 哪种脚本语言最接近 C/C++ 语法?
  3. 是否有另一种我不知道的脚本语言?
scripting unix
  • 15 15 个回答
  • 22147 Views

15 个回答

  • Voted
  1. Best Answer
    DictatorBob
    2009-09-05T07:44:15+08:002009-09-05T07:44:15+08:00

    在某种程度上,这是个人喜好的问题。Perl 和 Python 在受欢迎程度方面绝对是最高的。

    但是,要回答您的三个问题中的两个:

    1. 我猜 bash 使用最广泛,可能其次是 perl。只是猜测,不知道是否有人做过调查。:)
    2. 那里有无数种脚本语言。:)

    我的建议是 Python。它易于阅读和编写,功能非常强大,并且网络上有大量有用的资源可供学习,更不用说您可以复制和重新利用的代码了。

    • 14
  2. Michael Pobega
    2009-09-05T08:05:13+08:002009-09-05T08:05:13+08:00

    Perl 和 Python 显然是答案。但它们每个都用于完成不同的任务:

    1. Bash - 是最容易学习的。使用 Bash 脚本,您可以运行命令并操作输出。
    2. Python - 第二容易学习。Python 比 Bash 更有用,因为您可以使用 Python 编写完整的程序,并且它受到社区的大力支持。Python 也非常易读,几个月后易于编辑。
    3. Perl - 三者中最好的(用于脚本),但很容易成为最陡峭的学习曲线。具有非常好的正则表达式支持(这是它今天仍在使用的主要原因),随着时间的推移,您可能会遇到很多 Perl 脚本。Perl 的主要问题是代码的可读性——在您编写代码几个月后,您将无法弄清楚它的作用。所以你最好重磅评论。
    4. Awk/Sed - 两者都非常有用,但都很难学习。我建议最后解决这些问题,除非你擅长模式。

    关于现在学习哪一个(因为你大概都不知道它们),我会学习 Python。这是最简单和最有用的知识。

    至于你的问题的答案:

    哪种脚本语言被现实世界的商店最广泛地使用?

    所有这些,但我想 Perl 在这里有一点优势(因为它在系统管理中使用的时间要长得多)。

    哪种脚本语言最接近 C/C++ 语法?

    Perl

    是否有另一种我不知道的脚本语言?

    红宝石,Tcsh/Csh,http ://en.wikipedia.org/wiki/Interpreted_language

    • 7
  3. slovon
    2009-09-05T07:46:12+08:002009-09-05T07:46:12+08:00

    awk 用于小型工作,python 用于多人。

    Python(如果你不使用特定的 API 和其他依赖于平台的东西)有一个丰富的“标准库”,它在你使用 python 版本的所有平台上都可用。这非常好,因为您可以轻松地重复使用脚本,这意味着即使您更改平台,您的知识也是一项很好的投资。

    在我们公司,我们使用 python 来编写所有的脚本,监控,... 和 java 的应用程序,我们在异构环境中很顺利。

    • 3
  4. 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++ 语法要求,从长远来看,坚持下去对您没有帮助。

    • 2
  5. 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
    • 2
  6. EBGreen
    2009-09-05T07:39:04+08:002009-09-05T07:39:04+08:00

    我会说 perl 和 python 可能是两个最好的选择。你也可以用 sed 和 awk 做很多事情。

    • 1
  7. David Mackintosh
    2009-09-05T07:49:24+08:002009-09-05T07:49:24+08:00

    如果您想从头开始学习一些东西,最好(重新)学习 bash。

    除此之外,perl 和 python 现在很流行。我偏爱 perl,但自从 Perl 4 发布以来,我的 perl 脚本风格并没有太大变化。

    我不知道有任何“类 c 语法”的脚本语言。

    • 1
  8. 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”之类的东西(一个广泛的对象系统)

    • 1
  9. Javier
    2009-09-05T11:37:23+08:002009-09-05T11:37:23+08:00
    1. 最常用:Perl,主要是出于历史原因。Python 在所有 Linux 和 BSD 发行版中广泛使用(它甚至安装在 Mac OSX 上),并且学习/编程要好得多。当然,一旦你掌握了语法,Bash 就更简单了,几乎可以在命令行上做任何事情。毕竟,它是命令行。

      • C 语法:有csh,但您可以轻松安装TCC并使用真正的C 作为脚本语言,从源代码编译比其他语言启动时间更短。

      • 其他脚本语言:很多!卢阿,红宝石,JavaScript...

    • 1
  10. 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 编写它更快更容易:)

    最后,您应该使用最适合您当前任务的任何语言,并且不要仅仅因为您最喜欢它而只使用给定的脚本语言。

    • 1

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果同一个任务已经在运行,如何防止计划任务运行?

  • 需要从 Batch For 循环中排除特定结果

  • Bash 脚本:要求脚本以 root 身份运行(或使用 sudo)

  • 从命令行删除旧的(非引导)Windows Vista 目录

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve