Shell 为您提供Unix系统的接口.它收集您的输入并根据该输入执行程序.当程序完成执行时,它会显示该程序的输出.
Shell是一个可以运行命令,程序和shell脚本的环境.有不同风格的shell,就像有不同风格的操作系统一样.每种shell都有自己的一组识别命令和函数.
提示符 $ ,它被称为命令提示符,由shell发出.显示提示时,您可以键入命令.
按 Enter 后,Shell会读取您的输入.它通过查看输入的第一个单词来确定要执行的命令.一个词是一组完整的人物.空格和制表符分隔单词.
以下是 date 命令的一个简单示例,它显示当前日期和时间 :
$date Thu Jun 25 08:30:19 MST 2009
你可以使用环境教程中解释的环境变量PS1自定义命令提示符.
在Unix中,有两种主要类型的shell和minus ;
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是由Stephen R. Bourne在20世纪70年代中期在新泽西州的AT& T贝尔实验室工作时编写的. .
Bourne shell是第一个在Unix系统上出现的shell,因此它被称为"shell".
Bourne shell通常是在大多数Unix版本上安装为/bin/sh .出于这个原因,它是编写可以在不同版本的Unix上使用的脚本的首选shell.
在本章中,我们将介绍大多数Shell概念.基于Borne Shell.
shell脚本的基本概念是命令列表,按顺序列出执行.一个好的shell脚本将有注释,前面有#符号,描述了这些步骤.
有条件测试,例如值A大于值B,循环允许我们浏览大量数据,文件读取和存储数据,变量读取和存储数据,脚本可能包含函数.
我们要写很多下一节中的脚本.它将是一个简单的文本文件,我们将把所有命令和其他几个必需的构造告诉shell环境做什么以及何时做.
Shell脚本和函数是两个解释.这意味着它们不会被编译.
假设我们创建了一个 test.sh 脚本.请注意,所有脚本都具有 .sh 扩展名.在向脚本添加任何其他内容之前,需要提醒系统正在启动shell脚本.这是使用 shebang 构造完成的.例如 :
#!/bin/sh
这告诉系统,后面的命令将由Bourne shell执行. 它被称为shebang,因为#符号被称为哈希,而且!符号被称为bang .
要创建包含这些命令的脚本,先将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是一种真正的编程语言,包括变量,控制结构等等.无论脚本有多复杂,它仍然只是一个顺序执行的命令列表.
以下脚本使用读取命令来获取来自键盘并将其指定为变量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 $