作者:Insist--
个人主页:insist--个人主页
作者会持续更新网络知识和python基础知识,期待你的关注
目录
一、认识BASH
1、硬件、核心与Shell
①硬件
②核心管理
③应用程序
2、为何要学文字接口的shell?
3、系统的合法shell与/etc/shells 功能
前言
在Linux的环境下,如果你不懂BASH是什么,那么其他的东西就不用学了!因为使用终端机下达指令的方式,就是透过bash的环境来处理的。所以说,它非常重要吧!BASH的内容非常的多,包括变量的设定与使用、bash操作环境的建置、数据流重导向的功能,还有那好用的管线命令!
我们知道,操作系统的核心是管理整个计算机硬件的,这个核心是需要被保护的!所以我们一般使用者就只能透过shell来跟核心沟通,以让核心达到我们所想要达到的工作。那么系统有多少shell可用?为什么我们要使用bash?
“什么是Shell?”,相信只要摸过计算机,对于操作系统有点概念的朋友们大多听过这个名词,因为只要有操作系统那么就离不开Shell。在讲解Shell之前,我们先来了解一下计算机的运作状况!
举个例子:当你要使用计算机放音乐的时候,你的计算机需要什么东西呢?
当然最重要的硬件有“声卡”这个配备,否则怎么会有声音。
操作系统的核心可以支持这个芯片组,当然还需要提供芯片的驱动程序;
需要你输入发生声音的指令。这就是基本的一个输出声音所需要的步骤,也就是说,你必须要输入一个指令之后,硬件才会透过你下达的指令来工作!
那么硬件如何知道你下达的指令呢?
那就是kernel (核心)的控制工作了。也就是说,我们必须要透过Shell将我们输入的指令与Kernel沟通,好让Kernel可以控制硬件来正确无误的工作!基本上,我们可以透过底下这张图来说明一下:
我们都知道,操作系统其实是一组软件,由于这组软件在控制整个硬件与管理系统的活动监测,如果这组软件能被用户随意的操作,若使用者应用不当,将会使得整个系统崩溃。因为操作系统管理的就是整个硬件功能!所以当然不能够随便被一些没有管理能力的终端用户随意使用。但是我们总是需要让用户操作系统的,所以就有了在操作系统上面发展的应用程序!用户可以透过应用程序来指挥核心,让核心达成我们所需要的硬件任务!有很多命令如:包括man , chmod , chown , vi , fdisk , mkfs等等指令,这些指令都是独立的应用程序,但是我们可以透过壳程序(就是指令列模式)来操作这些应用程序,让这些应用程序呼叫核心来运作所需的工作。
学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习Shell是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。目前Linux系统下最流行的运维自动化语言就是Shell和Python了。
两者之间,Shell几乎是IT企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止、数据备份及处理、日志分析等环节里,shell是不可缺的。Python更适合处理复杂的业务逻辑,以及开发复杂的运维软件工具,实现通过web访问等。Shell是一个命令解释器,解释执行用户所输入的命令和程序。一输入命令,就立即回应的交互的对话方式。
知道什么是Shell之后,那么我们再来了解一下 Linux使用的是哪一个shell?由于早年的 Unix 年代,发展者众,所以由于shell 依据发展者的不同就有许多的版本,例如常听到的 Bourne SHell (sh) 、在 Sun 里头预设的 C SHell、 商业上常用的TCSH 等等,每一种 Shell 都各有其特点。至于 Linux 使用的这一种版本就称为Bourne Again SHell (简称 bash),这个 Shell 是 Bourne Shell 的增强版本,也是基准于 GNU 的架构下发展出来的!
在介绍 shell 的优点之前,先来说一说 shell 的简单历史:
第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念他所以就称为 Bourne shell ,或直接简称为 sh !而后来另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计依附于 BSD 版的 Unix 系统中的 shell 。这个 shell 的语法有点类似 C 语言,所以才得名为 C shell ,简称为 csh !由于在学术界 Sun 主机势力相当的庞大,而 Sun 主要是 BSD 的分支之一,所以 C shell 也是另一个很重要而且流传很广的 shell 之一 。
那么目前我们的 Linux (以 CentOS 7为例) 有多少我们可以使用的 shells 呢?
你可以检查一下/etc/shells 这个文件,至少就有下面这几个可以用的 shells:
/bin/sh (已经被 /bin/bash 所取代)
/bin/bash (是 Linux 预设的 shell)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已经被 /bin/tcsh 所取代)
虽然各家 shell 的功能都差不多,但是在某些语法的下达方面则有所不同,因此建议你还是得要选择某一种 shell 来熟悉一下较好。 Linux 预设就是使用 bash ,所以最初你只要学会 bash 很不错了!