一、前言

  我们知道管理整个计算机硬件的其实是系统的内核,这个内核是需要被保护的,所以我们一般用户就只能通过shell来跟内核通信,以让内核达到我们所想要达到的工作。那么Linux系统有多少shell可用呢?为什么我们要使用shell?下面分别来谈一谈。

二、什么是shell?

  要弄明白shell是什么,首先要弄明白硬件、内核与shell的关联,如下图:

    

  操作系统其实就是一组软件,由于这组软件在控制整个硬件与管理系统的活动监测,若用户应用不当,将会使得整个系统崩溃,所以当然不能够随便被一些没有管理能力的终端用户随意使用。但是总是需要让用户操作系统的,所以就有了在操作系统上发展的应用程序。用户可以通过应用程序来指挥内核,让内核达到我们所需要的硬件任务。因为应用程序在操作系统角色图中的最外层,就如同鸡蛋的外壳一样,因此这个也就被称为shell。

  是不是所用的应用程序都可以称为shell呢?当然不是,我们还需要从功能来对shell进行定义,shell的功能只是提供用户操作系统的一个接口,因此这个接口要能调用其他的软件才行,例如vi,mkfs等命令其实都是独立的应用程序,但我们能通过shell(就是命令行模式)来操作这些应用程序,让这些应用程序调用内核来运行所需的工作。shell就是一个命令解释器。现在是不是有些理解了?

  那么我现在来对什么是shell做一个总结

只要能够操作应用程序的接口都能够称为shell。狭义的shell指的是命令行方面的软件,包括之后我们介绍的bash等。广义的shell则包括图形界面的软件,因为图像界面其实也能够操作各种应用程序来调用内核工作。

那么接下来我们对shell进行分类

  从界面角度来看,shell分为图形化界面shell(例如windows explorer,Linux下的kDE、GNOME)和命令行界面shell。

  这是百度百科对于explorer的解释  

explorer.exe进程为用户提供了图形用户界面(也称为图形壳),Explorer 图标简单的说就是用来显示系统的桌面环境,包括桌面图标和文件管理。另外请不要将此进程与浏览器进程(iexplore.exe)混淆。

  从使用角度来看,shell分为交互式和非交互式。

  交互式:在shell中键入指令,计算机执行指令返回结果,这种一问一答的方式就是交互式shell。

  非交互式:我们将一些命令写在文件中,shell读取这些文件中的命令,并将这些命令进行执行,当shell执行到文件末尾就完成了它的任务退出。我们常用的shell脚本就是非交互式shell

三、为什么要学习命令行界面的shell?

  1、操作统一化

    尽管有很多软件(如Linux下的X window)可以帮助我们很简单的设置好我们的主机,尽管它们界面亲善,功能强大。但不同的软件使用起来是有差异的,即使是相同的软件也是会有版本差异的,甚至不同的linux发行版所设计的x window界面也都不相同,这样会造成学习方面的困扰。

    命令行shell不同,几乎所有Linux发行版使用的bash都是一样的,这样就可以轻松切换不同的发行版,做到“一法通、万法通”。

  2、远程管理速度快

    Linux的管理经常需要通过该远程连接,而联机时命令行界面的传输速度一定比较快,而且,较不容易出现断线或者是信息外流的问题。

  3、Linux的核任督二脉:shell

    学习shell的好处多多,如果你是个系统管理员,或者有心要管理系统的话,那么shell与shell script真的有必要看一看,它就像“打通任督二脉,任何武功都能随你应用”一样。

四、bash shell的功能

  既然bash是Linux默认的shell,那么这个shell有什么好处,为什么Linux要使用它作为默认的shell呢?bash主要的优点有下面几个:

  1、命令记忆功能

    只有在命令行中按上下键就可以找到前/后一个输入的命令,默认的命令记忆功能可以达到1000个,这些命令记录放在主文件夹内的.bash_history中。

  2、命令与文件补全功能(tab键)

  3、命令别名设置功能(alias)

  查看系统内所有别名:

  

  给命令ls -al设置别名la:

  

  4、作业控制台、前台、后台控制

  这一部分后面在文章:Linux过程控制中在详细介绍。

  5、程序脚本(shell script)

  将平时管理系统常需要执行的连续命令写成一个文件,该文件并且可以通过交互的方式来进行主机的检测工作。也可以通过shell提供的环境变量及相关命令来设计。相当于一个小型的程序语言,功能相当强大。

  6、通配符

   除了完整的字符串之外,bash还支持许多通配符来帮助用户查询与命令执行。

   举例:使用“ls-l /usr/bin/X*,可以知道/usr/bin下面有多少以X开头的文件。

五、bash shell的内置命令

  输入man bash可以查看bash的说明文档,如果你浏览过这个文档,你会发现这个说明文档中有其它的文件说明,举例来说,cd命令的说明就在这个文档中,这是因为为了方便shell的操作,bash已经“内置”了很多命令,例如上面提到的cd。

  通过type命令可以知道每个命令是来自于外部命令(指的是其他非bash所提供的命令)或是内置在bash中的命令。

  

  

  利用type找到后面的名称时,如果后面接的名称并不能以执行文件的状态被找到 ,那么该名称是不会被显示出来的。也就是说type找的是“执行文件”而不是一般的文件名,这也进一步说明了上面说的每一个命令都是一个应用程序。

【Linux】-- 认识bash shell的更多相关文章

  1. linux之bash shell

    GNU bash ======================================================== 通常计算机硬件是由运算器.控制器.存储器.输入/输出设备等等这些物理 ...

  2. 【Linux】bash shell学习

    Bash Shell Linux系统的合法shell都写入/etc/shells这个文件,默认使用的shell版本称为“Bourne Again Shell(简称bash)” 用户登录时系统会分配一个 ...

  3. Linux的Bash Shell详解

    一.Bash Shell概述 1.什么是bash         bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互的工具,用户通过b ...

  4. ubantu linux的bash shell初接触

    本人是Linux初习者,同时也刚刚开始学习,将我的学习成长记录下来,来和大家一同分享! 我用的系统是Ubuntu 12.04,脚本编辑器用的是VIM,觉得很顺手!Shell语言用的是Bash Shel ...

  5. 如何在Windows 10安装和使用Linux的Bash shell

    转载自:百度经验 Windwos 10 的周年更新为开发人员提供一个大的新功能:一个完整的,基于Ubuntu的Bash shell中,可以直接在Windows上运行Linux软件. 这使得“Linux ...

  6. Linux下Bash shell学习笔记

    原文地址: http://www.cnblogs.com/NickQ/p/8870423.html 1.shell下没有变量类型和定义的概念. 变量直接使用不用定义 所有值都视为字符串. 在对变量取值 ...

  7. Linux之bash shell的学习

    1.什么是bash  shell bash 是Bourne Again Shell的简称,是从unix系统中的sh发展而来,是用户和偶Linux内核交互的工具,用户通过bash操作内核完成系统的使用和 ...

  8. linux 10 -Bash Shell编程

    二十三. Bash Shell编程:     1.  读取用户变量:     read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...

  9. Linux中bash shell环境变量

    别名 别名是命令的快捷方式.为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用.语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令.重要的 ...

  10. Linux系统bash shell之历史命令

    1.相关变量: HISTSIZE: 定义命令历史记录的条数 HISTFILE: 定义命令储存的文件,一般是 ~/.bash_history HISTFILESIZE: 定义了历史文件记录历史的条数 H ...

随机推荐

  1. XML配置报错

    警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram ...

  2. 【西北师大-2108Java】第三次作业成绩汇总

    [西北师大-2108Java]第三次作业成绩汇总 熟悉PTA平台线上测试环境: 理解用户自定义类的定义: 掌握对象的声明: 学会使用构造函数初始化对象: 使用类属性与方法的使用掌握使用: 掌握pack ...

  3. 一、man、系统工作、系统检测命令

    目录 一.man命令 (一)常用按键 (二)结构意义 二.常用系统工作命令 (一) echo (二)date (三)reboot (四)powoff (五)wget (六)ps (七)top (八)p ...

  4. array 数组

  5. 洛谷P3702 [SDOI2017]序列计数

    题目大意: Alice想要得到一个长度为\(n\)的序列,序列中的数都是不超过\(m\)的正整数,而且这\(n\)个数的和是\(p\)的倍数. Alice还希望,这\(n\)个数中,至少有一个数是质数 ...

  6. 介绍一个比较强大的网页剪藏工具——web-clipper

    网址:https://clipper.website/ 在语雀的第三方工具处遇到的. 感觉可以代替印象笔记网页端的剪藏,还是很强大的.

  7. [日常] SNOI2019场外VP记

    SNOI2019场外VP记 教练突然说要考一场别省省选来测试水平...正好还没看题那就当VP咯w... Day 1 八点开题打 .vimrc. 先看了看题目名...一股莫名鬼畜感袭来... 怎么T1就 ...

  8. Unity 2018 Cookbook (Matt Smith 著)

    1. Displaying Data with Core UI Elements (已看) 2. Responding to User Events for Interactive UIs (已看) ...

  9. 『CSP2019初赛后的总结』

    初赛已经过去了,分数大概也已经知道了,接下来的一个月停课应该就是全部准备复赛. 联赛前几次讲课的内容是组合计数,计数\(dp\),字符串,概率期望,数论,数据结构,多数知识点难度都是大于联赛难度的,不 ...

  10. ssh遇到port 22:No route to host问题的解决方法

    一 iptables 问题 1.没有安装,可以先安装 yum install iptables 2.防火墙的开启与关闭 即时生效,重启失效 service iptables start(开启) ser ...