什么是shell脚本以及为什么使用shell脚本

bash(以及通常意义上的shell脚本编程)已经有不短的历史了,每天都有新手通过bash见识到shell脚本编程和系统自动化的威力。随着微软公司在Windows 10中发布了交互式的bash shell以及Unix子系统,所以了解shell脚本所能实现的简洁和高效的是很有必要的。

1. 什么是shell脚本

从计算机出现的早期开始,shell脚本就一直在帮助系统管理员和程序员完成费时费力的枯燥工作。

那么,什么是shell脚本?为什么你要关心它?

shell脚本就是包含一组可运行的特定shell命令的文本文件,命令的执行顺序与其出现在脚本中的顺序一致。shell以命令行的形式提供了可用的操作系统的接口。

shell脚本其实就是为使用shell环境中的命令所编写的小型程序,可用于自动化那些通常没人愿意手动完成的任务,例如Web爬取、磁盘用量跟踪、天气数据下载、文件更名,等等。你甚至能够用shell脚本制作一些初级的游戏!脚本中可以加入简单的逻辑,例如在其他语言中出现的if语句,不过你很快就会看到,脚本的形式甚至可以更简单。

OS X、BSD以及Linux操作系统中可用的命令行shell有很多种,包括tcsh、zsh和广受欢迎的bash。每种shell都有自己的特性和功能,但是多数人在Unix中最先熟悉的就是bash。在OS X中,Terminal(终端)应用会打开一个bash shell窗口(如下图)。在Linux中,有各种各样的shell控制台程序,其中最常见的是gnome-terminal(GNOME)或konsole(KDE)。这些应用可以修改自身的配置来使用其他类型的shell,不过默认选用的都是bash。实际上,不管你用的是哪种类Unix操作系统,打开Terminal应用,得到的都是bash。

“shell osx”的图片搜索结果

使用终端与系统交互看起来是件艰巨的任务。但随着时间的推移,打开终端,快速对系统做出更改,会变得比在一个又一个的菜单中移动鼠标,找到要更改的选项更加自然便捷。

2. 为什么使用shell脚本

你也许疑惑为什么偏要选择bash shell脚本,而不去用那些漂亮的新语言,比如Ruby或Go。尽管这些语言都试图在多种系统上实现可移植性,但它们通常没有默认安装。原因很简单:所有Unix机器上都已经有了一个基本的shell,而且绝大多数用的都是bash shell。本文开头也提到过,微软最近在Windows 10中也加入了多数Linux发行版和OS X中采用的bash shell。这意味着你的shell脚本几乎不需要做什么额外的工作,就拥有了比以往更好的可移植性。相较于其他语言,shell脚本能够更准确、更轻松地完成系统维护及其他任务。当然bash并非十全十美,但并不妨碍它的强大。

如果你之前没有接触过shell脚本编程,那么现在对此应该有了基本的了解。创建小型脚本完成特定的任务是Unix哲学的核心。搞清楚如何编写脚本并根据个人需要扩展Unix系统,这样才能成长为一名高级用户。

留下评论