- Unix / Linux 初学者
- Unix / 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 - IO 重定向
- Unix / Linux - Shell 函数
- Unix / Linux - 联机帮助页
Unix / Linux - 什么是 Shell?
Shell为您提供了 Unix 系统的接口。它收集您的输入并根据该输入执行程序。当程序完成执行时,它会显示该程序的输出。
Shell 是一个我们可以运行命令、程序和 shell 脚本的环境。shell 有不同的风格,就像操作系统有不同的风格一样。每种风格的 shell 都有其自己的一组可识别的命令和函数。
外壳提示符
提示符$称为命令提示符,由 shell 发出。显示提示时,您可以键入命令。
按Enter后,Shell 会读取您的输入。它通过查看输入的第一个单词来确定您要执行的命令。单词是一组完整的字符。空格和制表符分隔单词。
以下是日期命令的简单示例,它显示当前日期和时间 -
$date Thu Jun 25 08:30:19 MST 2009
您可以使用环境教程中解释的环境变量 PS1 自定义命令提示符。
外壳类型
在 Unix 中,有两种主要类型的 shell -
Bourne shell - 如果您使用的是 Bourne 类型的 shell,则$字符是默认提示符。
C shell - 如果您使用 C 型 shell,则 % 字符是默认提示符。
Bourne Shell 有以下子类别 -
- 伯恩外壳 (sh)
- 科恩壳 (ksh)
- 谍影重重 shell (bash)
- POSIX shell (sh)
不同的 C 型外壳如下:
- C 外壳 (csh)
- TENEX/TOPS C 外壳 (tcsh)
最初的 Unix shell 是由 Stephen R. Bourne 于 20 世纪 70 年代中期在新泽西州 AT&T 贝尔实验室编写的。
Bourne shell 是第一个出现在 Unix 系统上的 shell,因此被称为“the shell”。
在大多数版本的 Unix 上,Bourne shell 通常安装为/bin/sh 。因此,它是编写可在不同版本的 Unix 上使用的脚本的首选 shell。
在本章中,我们将介绍大多数基于 Borne Shell 的 Shell 概念。
外壳脚本
shell 脚本的基本概念是命令列表,这些命令按执行顺序列出。一个好的 shell 脚本会有注释,前面有#号,描述步骤。
有条件测试,例如值 A 大于值 B,允许我们遍历大量数据的循环,用于读取和存储数据的文件,以及用于读取和存储数据的变量,并且脚本可能包含函数。
我们将在接下来的部分中编写许多脚本。这将是一个简单的文本文件,我们将在其中放置所有命令和其他几个必需的结构,告诉 shell 环境要做什么以及何时执行。
Shell 脚本和函数都是解释的。这意味着它们没有被编译。
示例脚本
假设我们创建一个test.sh脚本。请注意,所有脚本都有.sh扩展名。在向脚本添加任何其他内容之前,您需要提醒系统 shell 脚本正在启动。这是使用shebang构造完成的。例如 -
#!/bin/sh
这告诉系统接下来的命令将由 Bourne shell 执行。之所以称为 shebang,是因为#符号称为哈希,而 ! 符号称为“砰”。
要创建包含这些命令的脚本,请先放置 shebang 行,然后添加命令 -
#!/bin/bash pwd ls
壳牌评论
您可以将您的评论放入脚本中,如下所示 -
#!/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 $