Unix / Linux - 什么是 Shell?

  • 简述

    l 为您提供了一个到 Unix 系统的接口。它收集您的输入并根据该输入执行程序。当程序完成执行时,它会显示该程序的输出。
    Shell 是一个我们可以在其中运行命令、程序和 shell 脚本的环境。有不同风格的shell,就像有不同风格的操作系统一样。每种 shell 都有自己的一组可识别的命令和函数。
  • shell提示

    提示, $,这被称为 command prompt, 由 shell 发出。显示提示时,您可以键入命令。
    按下后shell会读取您的输入 Enter. 它通过查看输入的第一个单词来确定您要执行的命令。一个词是一组完整的字符。空格和制表符分隔单词。
    下面是一个简单的例子 date 命令,显示当前日期和时间 -
    
    $date
    Thu Jun 25 08:30:19 MST 2009
    
    您可以使用环境教程中解释的环境变量 PS1 自定义命令提示符。
  • shell类型

    在 Unix 中,有两种主要类型的 shell -
    • Bourne shell − 如果您使用的是 Bourne 型shell,则 $ 字符是默认提示。
    • C shell − 如果您使用的是 C 型 shell,则 % 字符是默认提示。
    Bourne Shell 具有以下子类别 -
    • 伯恩shell (sh)
    • 科恩shell (ksh)
    • Bourne Again shell (bash)
    • POSIX shell (sh)
    不同的 C 型shell如下 -
    • C shell (csh)
    • TENEX/TOPS C shell (tcsh)
    最初的 Unix shell 是由 Stephen R. Bourne 在 1970 年代中期在新泽西州 AT&T 贝尔实验室期间编写的。
    Bourne shell 是第一个出现在 Unix 系统上的 shell,因此它被称为“shell”。
    Bourne shell 通常安装为 /bin/sh在大多数版本的 Unix 上。因此,它是编写可在不同 Unix 版本上使用的脚本的首选 shell。
    在本章中,我们将介绍大部分基于 Borne Shell 的 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
    
    Note − 要执行当前目录中可用的程序,请使用 ./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
    $