2009-06-30 37 views
4

对于必须重复执行的工作,包括诸如移动文件和附加文本之类的事情,bash脚本仍然是一种行之有效的方式?如果我现在只有少量的bash技能,我应该投入时间学习做得更好,还是应该使用其他类似Perl或Python的东西?bash脚本仍然是要走的路?

回答

15

它总是值得拥有的各种课程的技能,但我明白,时间往往是紧张:)

我会说Python是可能给一如果它变得相当大,那么更易维护的解决方案,但对于小型脚本来说,bash是可以的。我会开始对100条线路感到紧张,或者如果你开始需要很多功能。 (当然,bash专家将能够找到更复杂脚本的方法,但脚本更容易被“随意”bash用户阅读,比如Java可能被“随便”的Java编码人员阅读。 )

+2

+1,我喜欢关于“休闲”用户的观点...... – rmeador 2009-06-30 19:14:12

0

你甚至可以使用Qt/C++。 QRegExp和QFile时使事情更容易:-)

2

我不会同意Jon Skeet的意见。尽管我总是怀念我的列表解析,但它们并不是我的shell的本地特性,对于低于10行的脚本(我的阈值低于Skeets,但我的能力也是如此),bash或任何本地shell语言都是我的快速/安全路线。我不会认为我认为转移到ipython作为本地shell的参数,认真;)

1

如果解决方案涉及列表,哈希或任何其他不平凡的数据结构,我会像一个dl像红宝石, python或perl。另一方面,如果我正在构建的东西将在多个平台上运行,而没有任何标准工具集的保证,那么我将使用bash,甚至是sh。这完全取决于解决方案的复杂性以及它的运行位置。

1

以我的经验使用任何你知道的命令行工具。我知道一些python,但是我的脚本中大约一半是用PHP编写的,因为这是我更了解的。

1

我知道bash是大多数(如果不是全部的话)Linux发行版的默认/ bin/sh,所以你不能在学习如何使用它时出错。但是,我会更进一步并尝试使用严格的Bourne shell语法。这样,您的脚本库将可轻松移植到其他UNIX版本。与其他人一样,这里假设你不需要更高级的特性,比如数组和其他东西,在这种情况下,更高级的语言就会处于有序状态。

在任何情况下,对于学习bash,我建议Advanced Bash-Scripting Guide作为一个很好的参考。

2

我同时使用bash和python。同时。 bash适用于短脚本(特别是zsh,当我不关心可移植性时,我最喜欢),python适用于更长,更复杂的脚本......但带有“嵌入”bash脚本的python甚至更好... os。 popen是你的朋友。

例如,我经常写:

for file in os.popen('find ...'): 
    ... 

代替人工手动操作的os.walk的,因为这是更快的方法去思考,往往要短得多。而且......当你使用管道时,这种技术会更好......

当然,要小心,因为可移植性可能是一个问题。此外,您还需要了解两种工具,以了解哪些部分使用哪种语言编写。

相关问题