- Unix/Linux 初学者教程
- Unix/Linux - 首页
- Unix/Linux - 什么是Linux?
- Unix/Linux - 入门指南
- Unix/Linux - 文件管理
- Unix/Linux - 目录
- Unix/Linux - 文件权限
- Unix/Linux - 环境变量
- Unix/Linux - 基本实用程序
- Unix/Linux - 管道与过滤器
- Unix/Linux - 进程
- Unix/Linux - 通信
- Unix/Linux - vi 编辑器
- Unix/Linux Shell编程
- Unix/Linux - Shell 脚本
- Unix/Linux - 什么是Shell?
- Unix/Linux - 使用变量
- Unix/Linux - 特殊变量
- Unix/Linux - 使用数组
- Unix/Linux - 基本运算符
- Unix/Linux - 决策语句
- Unix/Linux - Shell 循环
- Unix/Linux - 循环控制
- Unix/Linux - Shell 替换
- Unix/Linux - 引号机制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函数
- Unix/Linux - 手册页帮助
- 高级 Unix/Linux
- Unix/Linux - 标准 I/O 流
- Unix/Linux - 文件链接
- Unix/Linux - 正则表达式
- Unix/Linux - 文件系统基础
- Unix/Linux - 用户管理
- Unix/Linux - 系统性能
- Unix/Linux - 系统日志
- Unix/Linux - 信号和陷阱
Unix/Linux - 什么是Shell?
Shell 提供了与 Unix 系统交互的界面。它收集你的输入并根据该输入执行程序。程序执行完毕后,它会显示该程序的输出。
Shell 是一个运行命令、程序和 shell 脚本的环境。Shell 的种类很多,就像操作系统一样。每种 Shell 都有自己的一套可识别的命令和函数。
Shell 提示符
Shell 发出的提示符 $ 称为命令提示符。显示提示符时,您可以键入命令。
按下Enter键后,Shell 读取您的输入。它通过查看输入的第一个单词来确定要执行的命令。单词是一组连续的字符。空格和制表符分隔单词。
下面是一个简单的date命令示例,它显示当前日期和时间:
$date Thu Jun 25 08:30:19 MST 2009
您可以使用环境变量 PS1(在环境教程中解释)自定义您的命令提示符。
Shell 类型
在 Unix 中,主要有两种类型的 Shell:
Bourne shell - 如果你使用的是 Bourne 型 Shell,则$字符是默认提示符。
C shell - 如果你使用的是 C 型 Shell,则 % 字符是默认提示符。
Bourne Shell 有以下子类别:
- Bourne shell (sh)
- Korn shell (ksh)
- Bourne Again shell (bash)
- POSIX shell (sh)
不同的 C 型 Shell 包括:
- C shell (csh)
- TENEX/TOPS C shell (tcsh)
最初的 Unix Shell 是 20 世纪 70 年代中期由 Stephen R. Bourne 在新泽西州的 AT&T Bell Labs 编写的。
Bourne shell 是第一个出现在 Unix 系统上的 shell,因此被称为“the shell”。
Bourne shell 通常安装在大多数 Unix 版本的/bin/sh目录下。因此,它是编写可在不同 Unix 版本上使用的脚本的首选 shell。
本章将介绍大部分基于 Bourne Shell 的 Shell 概念。
Shell 脚本
Shell 脚本的基本概念是一个命令列表,这些命令按执行顺序排列。一个好的 shell 脚本将包含注释(以#符号开头),描述各个步骤。
它包含条件测试(例如,值 A 大于值 B)、循环(允许我们处理大量数据)、用于读取和存储数据的文件以及变量,并且脚本可能包含函数。
我们将在接下来的部分编写许多脚本。它将是一个简单的文本文件,我们将在其中放置所有命令以及其他一些必要的结构,这些结构告诉 shell 环境做什么以及何时做。
Shell 脚本和函数都是解释执行的。这意味着它们不会被编译。
示例脚本
假设我们创建一个test.sh脚本。请注意,所有脚本都将具有.sh扩展名。在向脚本添加任何其他内容之前,您需要提醒系统正在启动一个 shell 脚本。这是使用shebang结构完成的。例如:
#!/bin/sh
这告诉系统以下命令将由 Bourne shell 执行。它被称为 shebang,因为#符号称为哈希,而!符号称为感叹号。
要创建一个包含这些命令的脚本,请先放置 shebang 行,然后添加命令:
#!/bin/bash pwd ls
Shell 注释
您可以如下在脚本中添加注释:
#!/bin/bash # Author : Zara Ali # Copyright (c) Tutorialspoint.com # Script follows here: pwd ls
保存上述内容并使脚本可执行:
$chmod +x test.sh
现在 shell 脚本可以执行了:
$./test.sh
执行后,您将收到以下结果:
/home/amrood index.htm unix-basic_utilities.htm unix-directories.htm test.sh unix-communication.htm unix-environment.htm
注意 - 要执行当前目录中可用的程序,请使用./program_name
扩展的 Shell 脚本
Shell 脚本有一些必要的结构,用来告诉 shell 环境做什么以及何时做。当然,大多数脚本都比上面的要复杂。
毕竟,shell 是一种真正的编程语言,包含变量、控制结构等等。无论脚本多么复杂,它仍然只是一系列按顺序执行的命令。
以下脚本使用read命令,该命令从键盘获取输入并将其赋值给变量 PERSON,最后将其打印到 STDOUT。
#!/bin/sh # Author : Zara Ali # Copyright (c) Tutorialspoint.com # Script follows here: echo "What is your name?" read PERSON echo "Hello, $PERSON"
以下是脚本的示例运行:
$./test.sh What is your name? Zara Ali Hello, Zara Ali $