Linux shell概述
Unix的shell
shell种类
B-shell
:由Stephen R. Bourne(1944-)在贝尔实验室开发,是最早被普遍认可的shell,早期UNIX的标准shell, /bin/sh,
C-shell
: /bin/csh 由加利福尼亚大学的William N. Joy(也叫Bill Joy)在20世纪70年代开发,最初用在BSD2.0。Joy在1982年与他人共同创办了Sun Microsystems
K-shell
: Korn shell,/bin/ksh 贝尔实验室的David Korn在1986年开发。是B-shell的超集,支持带类型的变量,数组
/bin/bash
:Bourne Again shell,是Linux上的标准shell, 兼容Bourne Shell,扩展了B-shell,吸收了C shell的某特点。交互式使用时命令行编辑非常方便
- 管理员在创建用户时,设置了用户的登录shell
Shell的功能
- shell是命令解释器
- 文件名替换,命令替换,变量替换
- 历史替换,别名替换
- 流程控制的内部命令 (内部命令和外部命令)
Shell的特点
- 主要用途:批处理,执行效率比算法语言低
- shell编程风格和C语言等算法语言的区别
- shell是面向命令处理的语言,提供的流程控制结构通过对一些内部命令的解释实现
- 如同C语言设计思路一样,shell本身设计得非常精炼,但是它提供了灵活的机制(策略与机制相分离)
- shell许多灵活的功能,通过shell替换实现
- 例如:流程控制所需的条件判断,四则运算,都由shell之外的命令完成
理解Unix的shell
学习bash的目的
- 交互方式下:熟习shell的替换机制、转义机制,掌握循环等流程控制,可以编写复合命令
- 非交互方式:编写shell脚本程序,把一系列的操作,编纂成一个脚本文件,批量处理
主要内容
- 重定向与管道
- 方便交互使用的功能:历史替换与别名替换
- shell变量
- shell的变量替换,命令替换,文件名替换
- 元字符,如:单引号,双引号
- 流程控制
- 子程序