[toc]
shell简介
1.什么是shell
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面Shell。
kernel:为软件服务,接收用户或软件指令驱动硬件,完成工作
shell:命令解释器
user:用户接口,对接用户
上图可以看出,shell在操作系统中起到了承接用户和系统内核的作用。那为什么不直接用户对内核呢?
原因很简单,因为内核处理的都是二进制,而用户处理的都是高级语言。
Shell 脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但是shell 和 shell script 是两个不同的概念。
Shell 环境
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
- 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)
- ……
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
#! 是告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
2.shell分类
2.1 交互分类
2.1.1 交互式shell
交互式:顾名思义就是 shell 与用户存在交互,
用户登录后,在终端上输入命令,shell 立即执行用户提交的命令。
当用户退出后,shell 也终止了。
2.1.2 非交互式shell
非交互式:即 shell 与用户不存在交互,而是以 shell script
的方式执行的。
shell 读取存放在文件中的命令, 并且执行它们,类似如下
cat > test.sh <<EOF
a
b
c
EOF