zoukankan      html  css  js  c++  java
  • shell学习笔记1---shell编程基础

    Shell是什么?

    Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

    Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。

    Shell 是如何连接用户和内核的?

    我们运行一个命令,大部分情况下 Shell 都会去调用内核暴露出来的接口,这就是在使用内核

    接口其实就是一个一个的函数,使用内核就是调用这些函数。这就是使用内核的全部内容了吗?嗯,是的!除了函数,你没有别的途径使用内核。

    Shell 还能连接其它程序

    在 Shell 中输入的命令,有一部分是 Shell 本身自带的,这叫做内置命令;有一部分是其它的应用程序(一个程序就是一个命令),这叫做外部命令。

    Shell 也支持编程

    Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程,这和使用 C++C#JavaPython 等常见的编程语言并没有什么两样。

    Shell 也是一种编程语言,它的编译器(解释器)是 Shell 这个程序。我们平时所说的 Shell,有时候是指连接用户和内核的这个程序,有时候又是指 Shell 编程。

    Shell 是一种脚本语言

    任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。

    有的编程语言,如 C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。

    这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。

    而有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。

    这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。

    编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。

    脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。

    Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。

    常用的Shell有哪些

    Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件

    常见的 Shell 有 sh、bash、csh、tcsh、ash 等。

    sh

    sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。

    sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

    csh

    sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。

    Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是 Sun 公司的创始人之一。

    BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就连 Mac OS X 在很大程度上也基于BSD。

    tcsh

    tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

    ash

    一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

    bash

    bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。

    bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

    bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。

    尽管如此,bash 和 sh 还是有一些不同之处:

    • 一方面,bash 扩展了一些命令和参数;
    • 另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

      查看 Shell

    Shell 是一个程序,一般都是放在/bin或者/usr/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。

    通过 cat 命令来查看当前 Linux 系统的可用 Shell:

    $ cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /usr/bin/sh
    /usr/bin/bash
    /usr/sbin/nologin
    /bin/tcsh
    /bin/csh

    在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。

    如果你希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:

    $ echo $SHELL
    /bin/bash

    输出结果表明默认的 Shell 是 bash

  • 相关阅读:
    使用云(BAE)实现android应用数据的远程存取(MySQL)
    VI键盘图
    IOS 6 UIActivityViewController详解 社交分享
    IOS 计算字体控件盖度, 设置粗体+阴影
    myeclipse中tomcat 7.0 关于64位与32位的冲突问题 ( tcnative1.dll )
    九度OJ 1001 A+B for Matrices
    网站10大常见安全漏洞及解决方案
    js网页如何获取手机屏幕宽度
    常用正则说明
    php中的线程、进程和并发区别
  • 原文地址:https://www.cnblogs.com/ivy-zheng/p/10869959.html
Copyright © 2011-2022 走看看