Bash vs. Python:应该使用哪种语言?

两种编程语言各有优缺点,使得它们在某些任务上比其他任务更出色。
197 位读者喜欢这个。
Perl tricks for system administrators

Opensource.com

BashPython 是大多数自动化工程师最喜欢的编程语言。两者都有优点和缺点,有时很难选择应该使用哪一个。 诚实的答案是:这取决于任务、范围、上下文和任务的复杂性。

让我们比较这两种语言,以便更好地了解每种语言的优势所在。

Bash

  • 是一种 Linux/Unix shell 命令语言
  • 非常适合编写 shell 脚本,这些脚本使用命令行界面 (CLI) 实用程序,利用一个命令的输出到另一个命令(管道),以及执行简单的任务(最多 100 行代码)
  • 可以按原样使用命令行命令和实用程序
  • 启动时间比 Python 快,但执行时间性能较差
  • Windows 中未预装; 您的脚本可能与多个操作系统不兼容,但 Bash 是大多数 Linux/Unix 系统上的默认 shell
  • 与其他 shell(例如,csh、zsh、fish)完全兼容
  • 管道 ("|") CLI 实用程序(如 sed、awk、grep 等)可能会降低其性能
  • 缺少许多函数、对象、数据结构和多线程,这限制了其在复杂脚本/编程中的使用
  • 缺乏良好的调试工具和实用程序

Python

  • 是一种面向对象编程 (OOP) 语言,因此它比 Bash 更通用
  • 几乎可以用于任何任务
  • 可在大多数主要操作系统上运行,并且在大多数 Unix/Linux 系统上也默认安装
  • 非常类似于编写伪代码
  • 具有简单、清晰、易学和易读的语法
  • 有大量的库、文档和一个活跃的社区
  • 提供比 Bash 更好的错误处理功能
  • 具有比 Bash 更好的调试工具和实用程序,这使其成为开发涉及多行代码的复杂软件应用程序的绝佳语言
  • 应用程序(或脚本)可能包含许多第三方依赖项,必须在执行之前安装这些依赖项
  • 对于简单的任务,需要编写比 Bash 更多的代码行

我希望这些列表能让您更好地了解何时以及在何处使用哪种语言。

在您的日常工作中,您更多地使用哪种语言,Bash 还是 Python?请在评论中分享。

标签

16 条评论

这是数学
Bash 有 3 个 not,2 个 lacks,1 个 better,1 个 poor,1 个 great
Python 有 2 个 betters,1 个 great

这不是足球。“记分表”在您尝试为任务选择语言时没有帮助。第一:看看你的任务。第二:为*该任务*选择最佳语言。就这么简单。有时,它会是 Bash - 无论有没有记分表。我可以告诉你,99.99% 的情况下它会在配置或维护系统时出现。因为 bash 是一种特定领域的语言,而不是像 Python 这样的通用编程语言。 混淆的根源在于 Python 在许多情况下在系统管理领域中表现出色,但 Bash 的领域完全在那里。诚实地说,比较这两种语言就像苹果和橙子。

回复 作者 Greg P

这真的取决于任务。
我喜欢用 Python 自动化所有与 HTTP 通信的东西。
在 bash 中使用 curl 执行此操作是可能的,但很丑陋。

当与其他本地程序交互时,我喜欢 bash。

Bash 是 Linux 系统管理的本地语言。 您将原本要键入到 shell 提示符中的内容放入 bash shell 脚本中。

Python 是一种编程语言。 您使用它和其他编程语言来完成您原本无法通过在 shell 提示符下输入命令来完成的事情。

完全同意你的看法!

回复 作者 Lee Reynolds (未验证)

很好的信息,我两者都喜欢,但 python 可以用于几乎任何任务这一事实超越了一切。

可能是 python,对于任何超过几行的代码来说肯定是这样。 还有一些简洁的 CLI 工具(无论是 git 还是 skopeo)可以从 python 访问(参见 subprocess.Popen(),shlex),如果它们没有等效项 (Requests)。 在更高的层次上,Ansible 发挥作用... 或者 Bash 完成循环。 :)

是的,对于许多任务,我更喜欢 ansible/python/bash 的混合使用,这让我的生活更轻松 :)

回复 作者 Pavel Zubaty (未验证)

事实上,bash 比 python 慢得多。 因为 python 是用 C 编写的,这使得它接近操作系统的核心。

GNU Bash 作为本地 Linux 工具,最初旨在执行常规管理任务,我们中的一些人确实将其用于许多其他事情,这在某种程度上是好的。

除了启动时间之外,Bash 比 Python 慢,但无论如何,这种差异非常小,以至于人类难以察觉

回复 作者 tamrakar

谢谢。 这很有帮助

这是一个很好的资源 Archit! :)

它们互相补充。 我在 linux 上编写了很多小型 bash 脚本,就像我在 windows 上编写 powershell 一样。 然后我通过修改后的子进程运行它们并在 json 中返回响应。 所有将它们粘合在一起的管道,如身份验证、web、ssh、https 等都是 python。

Bash 也非常以操作系统为中心,并且严重依赖 linux 命令。 虽然编写在所有 windows/macOs/linux 上完全相同的 python3 非常容易,但前提是你只选择在所有地方都工作的模块。(现在大多数流行的 pypi 模块都可以)。

您是否有任何数据或证据表明 bash 较慢? 设置 python 的开销,它在版本之间会发生可怕的破坏.. 它的依赖地狱和许多其他缺点都没有提及。 这是一个相当有偏见的观点

与大多数人一样,这取决于工作。 如果是 10 行或更少,我倾向于更喜欢 bash,特别是当它将其他几个实用程序连接在一起形成一个实用程序时。

对于 bash,我不同意一个说法
管道 ("|") CLI 实用程序(如 sed、awk、grep 等)可能会降低其性能

恰恰相反...... 管道 CLI 实用程序可以提高其性能,因为管道中的每个步骤都是并行化的,因此它可以同时处理多个部分,从而利用多个核心。 当处理 TB 级文件中的多个层或处理时,这非常有效。

Python 缺乏对真正多线程的支持,尽管它可以像 bash 一样进行多进程,但对于那些适合在管道中运行的任务,bash 中的 | 比 python 容易得多。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.