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和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脚本的基本概念是命令列表,按顺序列出执行.一个好的shell脚本将有注释,前面有符号,描述了这些步骤.

有条件测试,例如值A大于值B,循环允许我们浏览大量数据,文件读取和存储数据,变量读取和存储数据,脚本可能包含函数.

我们要写很多下一节中的脚本.它将是一个简单的文本文件,我们将把所有命令和其他几个必需的构造告诉shell环境做什么以及何时做.

Shell脚本和函数是两个解释.这意味着它们不会被编译.

示例脚本

假设我们创建了一个 test.sh 脚本.请注意,所有脚本都具有 .sh 扩展名.在向脚本添加任何其他内容之前,需要提醒系统正在启动shell脚本.这是使用 shebang 构造完成的.例如 :

#!/bin/sh

这告诉系统,后面的命令将由Bourne shell执行. 它被称为shebang,因为符号被称为哈希,而且!符号被称为bang .

要创建包含这些命令的脚本,先将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是一种真正的编程语言,包括变量,控制结构等等.无论脚本有多复杂,它仍然只是一个顺序执行的命令列表.

以下脚本使用读取命令来获取来自键盘并将其指定为变量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
$