使用Python运行bash命令
#python #linux #bash #systems

当普通狂欢还不够

不久前,我在Sahil Bondre上读了一个出色的introductory Bash tutorial

这是一个非常出色的教程,讲述了外壳脚本的基础知识,但是我记得当我开始使用Shell Scriptting冒险时,以及我(结束)对Bash着迷的时候。随着时间的流逝,当我的神经影像脚本开始变得越来越复杂时,我逐渐开始失去对代码的控制!

很多次我觉得那样:

Linux bash why won't you work - crying peter parker | Meme Generator

Python时代

那是我发现的那个时候,在某个时候,需要更复杂的逻辑表达式(更多条件,环和功能),它值得从Bash转换为Python。希望有了Python,您可以包装(几乎)任何bash命令。这很简单:

import subprocess as sp

bash_command = "ls ~/"
print("\nBash command:\n%s\n" % bash_command)

process = sp.Popen(bash_command, stdout=sp.PIPE, shell=True)
output, error = process.communicate()

print("\nBash command output:\n%s\n" % output)
print("Bash command error:\n%s\n" % error)

(它适用于Linux和MacOS。)

请注意其他打印件,因为在运行命令之前更容易调试。此外,您可以看到命令的输出(就像普通的bash shell一样)。

上面的示例是受this StackOverflow answer的启发。

事实证明,Python语法更可读性,更易于维护,是的! ð

How To Write Better Python Code? - DEV Python is just a better “pseudocode compiler” than Bash.

采用~/消息

不要长时间坚持普通的狂欢 - 通常,您真正需要的只是Python!但是,对于一个非常简单的脚本,您当然可以始终使用良好的bash;)


另请参阅我从2020年开始的原始帖子(现在已经是2023年:),但是知识仍然是非常最新的):https://www.mindyourdata.org/posts/when-plain-bash-is-not-enough/


封面照片来源:Abhishek rana上的Unsplash

照片