首页 > 代码库 > linux下的shell和脚本

linux下的shell和脚本

1.各种Unix shell

 

linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等

第一个Unix shell是由肯·汤普逊,仿效Multic上的shell所实现出来,称为sh。

Bourne shell 兼容

  • Bourne shell (sh) 史蒂夫·伯恩在贝尔实验室时编写。1978年随Version 7 Unix首次发布。
    • Almquist shell (ash)
    • Bourne-Again shell (bash)
    • Debian Almquist shell(dash)
    • Korn shell (ksh) David Korn在贝尔实验室时编写。
    • Z shell (zsh)

C shell 兼容

  • C shell (csh) 比尔·乔伊在加州大学伯克利分校时编写。1979年随BSD首次发布。
    • TENEX C shell (tcsh)

其他

  • fish,第一次发布于2005年。
  • rc shell (rc) 九号项目系统的shell,由Tom Duff在贝尔实验室时编写。随后移植回 Unix 和其他的操作系统。scsh (Scheme Shell)
    • es shell (es) 一个函数式编程的rc兼容shell,编写于二十世纪九十年代中期。

2. perl、python、shell脚本区别

严格的讲, shell不是一种编程语言, 但是shell有自己的控制流结构(判断,循环,选择),运算以及函数等编程语言特性, 加上shell命令组织在一起构成脚本, 能够完成一般编程语言做到的事情.

perl和python相比于shell, 是严格意义上的编程语言. 功能比shell当然会复杂很多, 语法上也稍微复杂一些.
perl最大的优势在于它的字符串模式匹配能力,其提供了一个十分强大的正则表达式匹配引擎。然而perl语言的晦涩和对符号语法的过度使用,让解读变得很困难。这些语法令初学者不得精要,为他们的学习带来不小的阻碍。通常当你想阅读几个月前写的perl脚本的时候都不得不求助参考书。


系统管理的基础是shell, 这取决于shell的桥梁作用. 可以说, shell脚本几乎可以完成所有linux下的自动化任务.

perl/python处理某些问题可能比shell简单,高效, 可以说是提升系统管理水平的进阶手段.