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 个 nots,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 中返回响应。 所有将它们粘合在一起的胶带,如身份验证、网络、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 更容易完成那些适合在管道中运行的任务。

© . All rights reserved.