Dan*_*rms 70 python bash scripting perl comparison
我刚刚完成了作为大学CS学生的第二年,所以缺乏"真实世界"的知识.我在第一年学习了Java,继续使用Java,然后选择了C和简单的Bash脚本.今年夏天,我正在努力学习Perl(上帝帮助我).我过去曾经涉足过Python.
我的问题是,既然我们有非常易读,非常可写的脚本语言,如Python,Ruby,Perl等,为什么有人会编写Bash脚本?有什么我想念的吗?我知道我的linux盒子有perl和python.它们不是无处不在吗?在Bash中有什么比在其他地方更容易做的事情吗?
Mat*_*hen 57
除此之外,当你正在做的大部分工作是在各种程序之间进行通信和管道(其中许多也是标准的)时,bash很有用.有很多环境可以使用bash(或者至少是POSIX shell),但Perl和Python却没有.
当然,您应该区分交互式bash和脚本bash.Ubuntu最近将他们的默认脚本shell(#!/bin/sh)更改为dash,因为它更快.但是,bash具有有用的交互功能,破折号没有(zsh仍然更好,恕我直言).
mic*_*ino 34
Bash在系统管理,Web应用程序部署,数据处理,sutomated备份,甚至是日常管理的日常管理方面都非常有用,仅举几例.我认为现在判断像BASH这样的"资深IT士兵"还为时过早.
编辑谷歌搜索:
我还想提一下TextMate一个成功的OS-X程序里面有很多Bash机器.
mik*_*002 24
Bash脚本允许您使用与手动输入命令时相同的语言自动执行命令行任务.
#!/bin/sh
echo $PATH
Run Code Online (Sandbox Code Playgroud)
import os
print os.getenv("path")
Run Code Online (Sandbox Code Playgroud)
dar*_*rak 24
bash和python之间的真正区别在于python是一种通用的脚本语言,而bash只是一种在一系列中运行无数小(通常非常快)的程序的方法.Python可以做到这一点,但它没有针对它进行优化.程序(sort,find,uniq,scp)可以非常简单地执行非常复杂的任务,而bash允许这些任务非常简单地与管道互操作,从文件或设备中刷新输出和输出.
虽然Python可以运行相同的程序,但是你将被迫在python脚本中执行bash脚本来完成同样的事情,然后你就会遇到python和bash.两者都很好,他们自己,但这些混合不会改善任何东西恕我直言.
n1k*_*1lp 14
对于很多任务,bash可以非常简洁.用于在当前目录的所有文件中搜索字符串并打印这些行的代码:
在bash中:
grep -ir "search_term" .
Run Code Online (Sandbox Code Playgroud)
在Python中:
for file in os.listdir('.'):
file_content = open(file).readlines().split('\n')
for line in file_content:
if line.count("search_term") > 0:
print file, ": ", line
Run Code Online (Sandbox Code Playgroud)
Qua*_*um7 11
我认为python对于许多任务来说不像bash那么自然的强烈论据是一个简单的事实,即没有人使用python解释器作为它们的shell.显然这是可能的:
python> import os, subprocess
python> os.chdir(os.path.expanduser("~/work"))
python> subprocess.call(["vim","README"])
Run Code Online (Sandbox Code Playgroud)
显然使用python作为shell是荒谬的.Bash专为运行其他程序而设计.Python是为进行计算而设计的.虽然大多数事情都可以用任何一种语言完成,但总有一些任务可以在bash中比在python中更容易完成,反之亦然.
好吧,当使用bash编写时,您可以直接在命令行上使用您拥有的每个可能的工具.使用任何其他语言,您首先必须执行该命令并获得一些结果等.一个简单的脚本(例如)获取进程列表,通过grep运行并获得一些结果将在其他语言中复杂得多.因此,bash仍然是编写快速内容的好工具.
许多启动脚本传统上是作为 shell 脚本编写的,并且似乎没有摆脱这些的趋势。
Shell 脚本非常适合启动其他进程并将它们的输入/输出粘合在一起。这是其他脚本语言没有那么强大的领域。
除此之外:即使像 Perl、Python 和 Ruby 这样的语言变得越来越普遍,但实际上在每个类 Unix 系统上你唯一能保证的语言是bourne shell(尽管不一定是bash的形式)。
| 归档时间: |
|
| 查看次数: |
41550 次 |
| 最近记录: |