探索Linux Shell
接下来,让我们来探讨几个Shell,看看它们为Linux Shell的发展做出了哪些贡献。
C Shell
1978年,Bill Joy还在加州大学伯克利分校读书的时候,就为BSD UNIX(Berkeley Software Distribution UNIX)开发了C Shell。
五年之后,C Shell引入了Tenex系统中的一些功能,如命令行编辑功能和文件名和命令自动补全功能。Tenex C shell(tcsh)保持了对csh的向后兼容,并且提升了整体的交互性,它是Ken Greer在卡内基-梅隆大学开发出来的。
C Shell的一个主要设计目标就是创建一种语法类似于C语言的脚本语言,因为C语言在当时非常流行,而且UNIX是用C来开发的。
Bill Joy在C Shell中引入的另一个重要特性是命令历史记录。此功能可以保留之前执行的命令的历史记录,并允许用户查看并选择执行之前的命令。
例如,键入history命令可以查看之前执行的命令,使用上下箭头键可以选择一个命令,使用!!可以执行前一个命令。引用前一个命令的参数也是可以的,比如,!*可以引用前一个命令的所有参数,!$可以引用前一个命令的最后一个参数。
请参看下面的一个Tcsh脚本示例,这个脚本使用了一个参数(目录名称),统计该目录下所有可执行文件的数目。
代码1:在tcsh中统计可执行文件的数目
|
Korn Shell
Korn Shell是由David Korn设计的,差不多跟Tenex C Shell同时发布。除了向后兼容Bourne Shell,Korn Shell最引人瞩目的特性就是支持脚本编程。
Korn Shell原来是专有软件,直到2000年,它才(遵照通用公共许可协议)作为开源软件发布。除了对Bourne提供很好的兼容性,Korn Shell还包含了一些来自其他Shell的功能,如csh的历史记录功能。它还提供了一些更先进的功能,这些功能可以在诸如Ruby和Python之类的现代脚本语言中找到——例如,关联数组和浮点运算。