Bash入门

什么是 shell ?为什么要关注 shell ?

所有近代(指从 1970 年左右开始)的计算机操作系统都采用了某种形式的用户界面,借此指定需要操作系统执行的命令。但是在很多操作系统中,命令行界面是内建的,是同计算机交互的唯一方式。操作系统的命令行界面允许你执行命令,可也就如此而已了。毕竟,除了这个,还有什么别的能做的吗?

Bash入门

将 shell(系统中允许用户输入命令的部分)与其他部分相分离的概念通过 Unix 操作系统流行开来,这里的其他部分包括:输入/输出系统、调度程序、内存管理以及操作系统负责为用户打理的其他事务方面(还有多数用户懒得操心的那些)。shell 无非是另一个程序罢了,它的工作就是为用户执行其他程序。

但这只是变革的开始。shell 不过是在 Unix 上运行的一个程序,如果你不喜欢标准 shell,可以自己编写一个。因此,在 Unix 头个十年的尾声,至少出现了两个竞争对手:Bourne shell(sh,这是最初的 Thompson shell 的接替版本)和 C shell(csh)。到 Unix 第二个十年末,又涌现出了更多选择:Korn shell(ksh)和 bash shell 的首个版本。在 Unix 第三个十年结束时,各种 shell 估计有一打了。

你大概不会坐着喃喃自语:“我今天该用 csh,还是 bash 或 ksh 呢?”不管 Linux(或者 BSD、macOS、Solaris、HP/UX)提供的是哪种标准 shell,你八成都会乐于接受。但是将 shell 与操作系统自身分离使得软件开发人员(例如 bash 之父 Brian Fox 以及 bash 当前的开发者和维护者 Chet Ramey)更容易编写出更好的 shell,你也可以在不改动操作系统的前提下编写出新的 shell。添加新 shell 更是容易得多,用不着说服操作系统厂商将 shell 构建入系统;你要做的就是将 shell 打包,使其能够像其他程序一样安装就行了。

你可能会觉得 shell 无非就是一个接受命令并执行的程序嘛,这也有点太大惊小怪了吧。你想得没错:一个只能允许你输入命令的 shell 的确没多大意思。但是有两个因素推动了 Unix shell 的演变:用户便利性和编程。由此产生的现代 shell 所能做的可就远不止处理命令了。

现代 shell 用起来非常趁手。例如,它们能记得你输入过的命令,便于你随后重新使用。你还能编辑这些历史命令。另外,你可以定义自己的命令缩写、快捷方式以及其他功能。对于有经验的用户,输入命令(例如配合简写、快捷方式、命令补全)要比在炫目的窗口化界面中拖曳高效得多。

除了提供这些便利,shell 还是可编程的。很多命令序列需要一遍又一遍地输入。但凡同一件事做了两遍,你就应该自问:“难道就不能写个程序帮我搞定吗?”当然可以。shell 也是一种编程语言,特别设计用于处理计算机系统的命令。如果你想从 WAV 文件中生成上千个 MP3 文件或压缩所有的系统日志文件,都可以写一个 shell 程序(或者说 shell 脚本)来实现。只要发现在重复做某项任务,就应该尝试用 shell 脚本实现任务自动化。Perl、Python、Ruby 这些脚本语言的功能更为强大,但 Unix shell(无论你使用的是哪种 shell)可以作为一个很好的学习起点。毕竟你已经知道如何输入命令,干吗不更进一步呢?

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!