zoukankan      html  css  js  c++  java
  • shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

    shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度。

    Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器

    bash

    bash是Linux标准默认的shell,本教程也基于bash讲解。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。

    Linux使用它作为默认的shell是因为它有诸如以下的特色:

    • 可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。
    • 自动通过查找匹配的方式给出以某字符串开头的命令。
    • 包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。

    sh

    sh 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。

    程序设计语言可以分为两类:编译型语言和解释型语言。

    编译型语言

    如C、C++和Java,都是编译型语言。这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。运行程序时,直接读取目标代码(object code)。由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点。

    但是,由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。例如,在C++里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。

    解释型语言

    执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。因为每次执行程序都多了编译的过程,因此效率有所下降。

    使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象;缺点是它们的效率通常不如编译型语言。脚本编程语言的例子有awk、Perl、Python、Ruby与Shell。

    Shell的使用范围

    因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:

    1. 比较重视效率时
    2. 需要处理大任务的数学操作,尤其是浮点运算、精确计算或者复杂的算术运算(C++)
    3. 有跨操作系统的移植需求(java)
    4. 复杂应用,需要结构化编程、GUI、I/O、socket接口、直接操作硬件、高安全性等。
  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/houkai/p/4714746.html
Copyright © 2011-2022 走看看