关闭

Linux Shell进化简史

发表于:2011-12-26 10:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张志平 译    来源:51Testing软件测试网采编

  探索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中统计可执行文件的数目

  1. #!/bin/tcsh 
  2. # find all executables 
  3. set count=0 
  4. # Test arguments 
  5. if ($#argv != 1) then 
  6. echo "Usage is $0 <dir>" 
  7.   exit 1 
  8. endif 
  9. # Ensure argument is a directory 
  10. if (! -d  $1) then 
  11.   echo "$1 is not a directory." 
  12.   exit 1 
  13. endif 
  14. # Iterate the directory, emit executable files 
  15. foreach filename ($1/*) 
  16.   if (-x $filename) then 
  17.     echo $filename 
  18.     @ count = $count + 1 
  19.   endif 
  20. end 
  21. echo 
  22. echo "$count executable files found." 
  23. exit 0

  Korn Shell

  Korn Shell是由David Korn设计的,差不多跟Tenex C Shell同时发布。除了向后兼容Bourne Shell,Korn Shell最引人瞩目的特性就是支持脚本编程。

  Korn Shell原来是专有软件,直到2000年,它才(遵照通用公共许可协议)作为开源软件发布。除了对Bourne提供很好的兼容性,Korn Shell还包含了一些来自其他Shell的功能,如csh的历史记录功能。它还提供了一些更先进的功能,这些功能可以在诸如Ruby和Python之类的现代脚本语言中找到——例如,关联数组和浮点运算。

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号