什么是 Shell
Shell 是一个用 C 语言编写的程序, 它是用户使用 Linux 的桥梁. Shell 既是一种命令语言, 又是一种程序设计语言.
Shell 是指一种应用程序, 这个应用程序提供了一个界面, 用户通过这个界面访问操作系统内核的服务.
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell.
Shell 脚本
Shell 脚本 (shell script), 是一种为 shell 编写的脚本程序.
业界所说的 shell 通常都是指 shell 脚本, 但我们要知道, shell 和 shell script 是两个不同的概念.
由于习惯的原因, 简洁起见, 本文出现的 "shell 编程" 都是指 shell 脚本编程, 不是指开发 shell 自身.
Shell 环境
Shell 编程跟 java,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)
以上几种 Shell 具体区分如下:
sh(全称 Bourne Shell): 是 UNIX 最初使用的 shell, 而且在每种 UNIX 上都可以使用.
Bourne Shell 在 shell 编程方面相当优秀, 但在处理与用户的交互方面做得不如其他几种 shell.
bash(全称 Bourne Again Shell)
: LinuxOS 默认的, 它是 Bourne Shell 的扩展. 与 Bourne Shell 完全兼容, 并且在 Bourne Shell 的基础上增加了很多特性. 可以提供命令补全, 命令编辑和命令历史等功能. 它还包含了很多 C Shell 和 Korn Shell 中的优点, 有灵活和强大的编辑接口, 同时又很友好的用户界面.
csh(全称 C Shell): 是一种比 Bourne Shell 更适合的变种 Shell, 它的语法与 C 语言很相似.
Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本.
Tcsh 包括命令行编辑, 可编程单词补全, 拼写校正, 历史命令替换, 作业控制和类似 C 语言的语法, 他不仅和 Bash Shell 提示符兼容, 而且还提供比 Bash Shell 更多的提示符参数.
ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容.
pdksh: 是 Linux 系统提供的 ksh 的扩展. pdksh 支持人物控制, 可以在命令行上挂起, 后台执行, 唤醒或终止程序.
创建一个 Shell 脚本
在文件夹中用 touch 或文本编辑器 vi/vim 命令新建一个以. sh 为扩展名的脚本, 如 test.sh.
注意扩展名不影响脚本执行, 但要做到见名知意.
输入第一行代码.
- #!/bin/bash
- echo "Hello World !"
其中,#! 是一个约定的标记, 它告诉系统这个脚本需要什么解释器来执行, 即使用哪一种 shell;
Echo 命令用于向窗口输出文本.
运行 shell:
作为可执行程序:
将代码保存后, 进入相应的目录, 执行以下命令
- chmod u
- +
- x
- ./test.sh #
使脚本具有执行权限
./test.sh #
执行脚本
注意, 一定要写成 ./test.sh, 而不是 test.sh, 运行其它二进制的程序也一样, 直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的, 而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里, 你的当前目录通常不在 PATH 里, 所以写成 test.sh 是会找不到命令的, 要用 ./test.sh 告诉系统说, 就在当前目录找.
作为解释器参数
这种运行方式是直接运行解释器, 参数是 shell 脚本的文件名:
/bin/sh test.sh
这种方式运行脚本不需要字第一行指定解释器信息.
[Linux]Shell 的学习
来源: http://www.bubuko.com/infodetail-2593273.html