📜  Unix / Linux-什么是外壳? -指导点

📅  最后修改于: 2020-10-31 14:51:06             🧑  作者: Mango


Shell为您提供了与Unix系统的接口。它从您那里收集输入,并根据该输入执行程序。程序完成执行后,将显示该程序的输出。

Shell是一个可以在其中运行命令,程序和Shell脚本的环境。外壳具有不同的风格,就像操作系统具有不同的风格一样。每种外壳程序都有其自己的一组公认的命令和功能。

外壳提示

提示符$称为命令提示符,由外壳程序发出。显示提示时,您可以键入命令。

在按Enter键后,Shell读取您的输入。它通过查看输入的第一个单词来确定要执行的命令。一个单词是完整的字符集。空格和制表符将单词分开。

以下是date命令的简单示例,其中显示了当前日期和时间-

$date
Thu Jun 25 08:30:19 MST 2009

您可以使用“环境”教程中介绍的环境变量PS1自定义命令提示符。

外壳类型

在Unix中,有两种主要的Shell类型-

  • Bourne shell-如果使用的是Bourne类型的shell,则$字符是默认提示。

  • C shell-如果使用的是C型shell,则%字符是默认提示。

Bourne Shell具有以下子类别-

  • 伯恩贝壳(sh)
  • 角壳(ksh)
  • Bourne Again壳(重击)
  • POSIX外壳(sh)

不同的C型壳遵循-

  • C Shell(CSH)
  • TENEX / TOPS C外壳(TCSH)

最初的Unix shell是由Stephen R. Bourne在新泽西州AT&T贝尔实验室时于1970年代中期编写的。

Bourne shell是Unix系统上第一个出现的shell,因此被称为“ shell”。

在大多数版本的Unix上,Bourne shell通常都安装为/ bin / sh 。由于这个原因,它是编写可在不同版本的Unix上使用的脚本的选择的外壳。

在本章中,我们将介绍大多数基于Borne Shell的Shell概念。

Shell脚本

Shell脚本的基本概念是命令列表,按执行顺序列出。一个好的shell脚本将带有注释,并以号开头,描述步骤。

有条件测试,例如值A大于值B,循环使我们能够处理大量数据,读取和存储数据的文件以及读取和存储数据的变量,并且脚本可能包含函数。

在下一节中,我们将编写许多脚本。这将是一个简单的文本文件,我们将在其中放入所有命令以及其他一些必不可少的构造,这些构造告诉外壳环境做什么和何时进行。

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是一种真正的编程语言,其中包含变量,控制结构等。无论脚本变得多么复杂,它仍然只是顺序执行的命令的列表。

以下脚本使用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
$