【Linux】-- 认识bash shell
一、前言
我们知道管理整个计算机硬件的其实是系统的内核,这个内核是需要被保护的,所以我们一般用户就只能通过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的更多相关文章
- linux之bash shell
GNU bash ======================================================== 通常计算机硬件是由运算器.控制器.存储器.输入/输出设备等等这些物理 ...
- 【Linux】bash shell学习
Bash Shell Linux系统的合法shell都写入/etc/shells这个文件,默认使用的shell版本称为“Bourne Again Shell(简称bash)” 用户登录时系统会分配一个 ...
- Linux的Bash Shell详解
一.Bash Shell概述 1.什么是bash bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互的工具,用户通过b ...
- ubantu linux的bash shell初接触
本人是Linux初习者,同时也刚刚开始学习,将我的学习成长记录下来,来和大家一同分享! 我用的系统是Ubuntu 12.04,脚本编辑器用的是VIM,觉得很顺手!Shell语言用的是Bash Shel ...
- 如何在Windows 10安装和使用Linux的Bash shell
转载自:百度经验 Windwos 10 的周年更新为开发人员提供一个大的新功能:一个完整的,基于Ubuntu的Bash shell中,可以直接在Windows上运行Linux软件. 这使得“Linux ...
- Linux下Bash shell学习笔记
原文地址: http://www.cnblogs.com/NickQ/p/8870423.html 1.shell下没有变量类型和定义的概念. 变量直接使用不用定义 所有值都视为字符串. 在对变量取值 ...
- Linux之bash shell的学习
1.什么是bash shell bash 是Bourne Again Shell的简称,是从unix系统中的sh发展而来,是用户和偶Linux内核交互的工具,用户通过bash操作内核完成系统的使用和 ...
- linux 10 -Bash Shell编程
二十三. Bash Shell编程: 1. 读取用户变量: read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后 ...
- Linux中bash shell环境变量
别名 别名是命令的快捷方式.为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用.语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令.重要的 ...
- Linux系统bash shell之历史命令
1.相关变量: HISTSIZE: 定义命令历史记录的条数 HISTFILE: 定义命令储存的文件,一般是 ~/.bash_history HISTFILESIZE: 定义了历史文件记录历史的条数 H ...
随机推荐
- (三)Amazon Lightsail 部署LAMP应用程序之连接到Lightsail数据库
连接到Lightsail数据库 简介:应用程序的Web前端的第一次迭代不建议固有的可伸缩性,因为数据库和前端位于同一台机器,只需要额外的前端容量,添加额外的数据库实例就会出现问题,若想解决此问题,需要 ...
- CF343D Water Tree 树链剖分
问题描述 LG-CF343D 题解 树剖,线段树维护0-1序列 yzhang:用珂朵莉树维护多好 \(\mathrm{Code}\) #include<bits/stdc++.h> usi ...
- 【day02】Xhtml
一.HTML实体(HTML Entites) 1.HTML实体:W3C规定在浏览器看到的特殊符号必须用HTML实体 单引号(') ===== ' 双引号(") ===== " ...
- ORB-SLAM2 地图保存
一.简介 在ORB-SLAM2的System.h文件中,有这样一句话:// TODO: Save/Load functions,让读者自己实现地图的保存与加载功能.其实在应用过程中很多场合同样需要先保 ...
- 公式推导【BACF//ICCV2017】
HK Galoogahi, A Fagg, S Lucey. Learning Background-Aware Correlation Filters for Visual Tracking[C]. ...
- 理解CMS GC日志
本文翻译自:https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs 准备工作 JVM的GC日志的主要参数包括如下几个:-XX:+ ...
- ELK 框架整体流程编写 以及logstash脚本编写
Elasticsearch Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引 ...
- date——系统时间的命令
这是一个可以用各种姿势获得各种时间的命令.最近在写自动化定时脚本时学了一下. 参考:https://www.cnblogs.com/ginvip/p/6357378.html 比如: 利用cronta ...
- 一个利用 Parallel.For 并行处理任务,带有进度条(ProgressBar)的 WinForm 实例(下)
接着上一篇:一个利用 Parallel.For 并行处理任务,带有进度条(ProgressBar)的 WinForm 实例(上) 直接贴代码了: using System; using System. ...
- 《数据结构》《C++程序设计》《计算机组成原理》中的英语名词
一.数据结构 data 数据data element 数据元素data item 数据项data object 数据对象data structure 数据结构ADT (Abstruct Date Ty ...