Bash脚本还有用吗?
我刚刚完成了大学计算机专业的第二年,所以我在“真实世界”的知识上还很欠缺。我第一年学了Java,第二年继续学Java,还学了一些C语言和简单的Bash脚本。这个夏天我打算学习Perl(希望能顺利)。我之前也接触过一点Python。
我想问的是,现在我们有像Python、Ruby、Perl这样既易读又易写的脚本语言,为什么还有人会写Bash脚本呢?我是不是漏掉了什么?我知道我的Linux电脑上有Perl和Python。它们难道不够普及吗?真的有比用其他高级语言更容易用Bash做的事情吗?
18 个回答
bash和python之间的真正区别在于,python是一种通用的脚本语言,而bash则是用来顺序运行许多小程序(通常这些程序运行得很快)的一种方式。虽然python也能做到这一点,但它并不是专门为此优化的。像sort、find、uniq、scp这些程序可以非常简单地完成复杂的任务,而bash则让这些任务通过管道连接、从文件或设备中输入输出等方式非常简单地协同工作。
虽然python可以运行相同的程序,但如果想要实现相同的功能,你就得在python脚本中使用bash脚本,这样你就得同时处理python和bash。它们各自都很好,但我认为把这两者混在一起并没有什么好处。
Bash在系统管理、网页应用部署、数据处理、自动备份,甚至是每天的任务管理中都非常有用,这里只是列举了一些例子。我觉得现在还太早去评价像BASH这样的“老牌IT工具”。
补充一下,网上搜索了一些资料:
我还想提一下,TextMate这个成功的OS-X程序里面有很多Bash的功能。
除了其他用途,bash在你需要和不同程序之间进行交流和数据传输时特别有用(而且很多程序都是标准的)。在很多环境中,bash(或者至少是一个POSIX shell)是可以使用的,但Perl和Python可能就不行。
当然,你需要区分交互式的bash和脚本式的bash。最近,Ubuntu把他们默认的脚本shell(#!/bin/sh
)换成了dash,因为dash运行得更快。不过,bash有一些交互式的功能是dash没有的(我觉得zsh更好)。