Shell脚本与Python相比的优势

我几次尝试学习shell(bash)脚本,但被语法驱赶了。 然后我find了Python,并且能够完成shell脚本在Python中可以完成的大部分工作。 我现在不确定我是否应该花时间学习shell脚本。 所以我想问一下:

与Python相比,shell脚本的优点是什么,使它成为不可或缺的工具?

我不是一个专业的系统pipe理,但我有兴趣为家庭用户设置Linux系统,因此我认为学习shell脚本是必要的。

  • Shell脚本对于I / Oredirect具有更简单的符号。
  • 在shell中现有的程序中创buildpipe道更简单。
  • Shell脚本重用整个程序。
  • 壳是普遍可用的(在任何像Unix) – Python不一定安装。

“你确实可以用Python做所有你可以做的事情; 在Python中有些东西在shell中很难实现(就像在shell中很容易,但在Python中很难)。 了解这两者将是最好的长期。

“与Python相比,shell脚本的优点是什么,使之成为不可或缺的工具?”

壳不是必不可less的。 你为什么觉得这么多? bash,tcsh,csh,sh等等,

Python 一个shell。 不是你用来运行所有命令的,但是对于脚本来说,这是理想的。

Python是所有Linux发行版的一个或多或less的标准部分。

更传统的炮弹做太多的事情。

  1. 他们有一个方便的用户界面来运行命令。 这包括shell在其中searchPATH的单行命令,分叉和执行所请求的程序。 它还包括pipe道,序列和并发程序(使用;|& )以及一些redirect(使用>< )。

  2. 他们有一个小编程语言的能力,用于运行脚本。 这种语言很难使用,效率极低。 这种语言中的大多数语句都需要分叉一个或多个进程,浪费时间和内存。

从shell运行程序,将stderrredirect到一个日志文件,这种事情是很好的。 在shell中做这个。

几乎所有的事情都可以像Python脚本一样更高效更清晰地完成。

你需要两个 。 但是,您不应该使用传统shell语言的if语句或循环编写脚本。

shell使得普通和简单的操作变得非常简单,而使得更复杂的事情变得复杂得多。

通常情况下,一个小的shell脚本比相应的python程序更短更简单,但是python程序会倾向于优雅地接受修改,而shell脚本会随着代码的增加而变得越来越难以维护。

这样做的结果是,为了获得最佳的日常工作效率,您需要使用shell脚本,但是您应该主要用于一次性脚本,并在其他地方使用python。

没有什么你可以用shell脚本做的,你不能用python做。 shell脚本最大的好处就是你可以像使用shell一样使用相同的命令,所以如果你是一个笨重的shell用户,shell脚本在某种程度上会成为一个非常快速简单的方法来自动化你的shell工作。

我也发现处理shell脚本中的数据pipe道比python更容易处理,尽pipe从python是绝对可行的。

而且,最后,您不必再启动额外的interpeter来运行shell脚本,从而为您提供非常小的速度和内存使用优势。

但是再一次,Python脚本更易于维护,我试图从很大的丑陋的shell脚本迁移到Python脚本。 使用Python进行exception处理和QA也更容易。

正如所有以前的答案所指出的那样,一个人不必学习shell脚本; 但学习从来不是一件坏事。 这实际上是个人优先考虑的问题。 其他人很难告诉你什么是和不值得的。

大多数程序员发现,每次学习新的语言越来越容易。 (自然语言也是如此),而且越早开始越好。

再加上:学过一门语言,你就可以从完全的知识和熟悉的位置上奢侈地消除它的局限性。 这可能不会让你奠定,但可能会从你的同行赚取你的啤酒!

我同意以前的大部分答案。 我认为shell命令最适合执行面向文件系统的任务(复制和移动文件,grep等)。 shell是更好的,在我看来,如果你必须读写文件,因为单个>>file.txtredirect附加到文件立即,而不是需要,比如说, file=open('file.txt','a'); file.write() file=open('file.txt','a'); file.write()

目前,对于我个人的使用,我混合使用,创build一个python脚本,并调用os.system('command')或os.popen('command')每次在shell中比在python中更容易一些操作。

shell随处可用。 如果您坚持一套相对基本的便携function,您的脚本可以在手机,无线路由器,DVR,上网本,工作站,大铁服务器等上运行。 在很多系统中,Python并不一定都是开箱即用的,根据环境的不同,可能很难安装它。

学习一些shell脚本也可以帮助你学习一些命令行技巧,因为命令行就是shell。 采取一些相当长和复杂的命令行也是很好的,并且在你意识到你将需要更多的命令之后将其转换成更通用的脚本。

壳也有一些相当强大的function; 就我所知,stream水线是一个非常有趣的控制结构,它只能在shell中生成。

在selectPython的shell脚本时需要考虑的另一件事是在目标机器上运行的Python版本。 RHEL5(名字一)将会在很长一段时间。 RHEL5停留在Python 2.4中。 有很多很好的库依赖于添加到Python post-2.4中的function。