|
第10章 学习Bash
10.1 什么是Shell
文字模式下指令输入的方式,就是bash的工具与接口。前几章我们已经介绍了很多的指令输入方式,所以说,bash shell根本就不难。本章我们会从变量谈起,先讨论环境变量的设定与修改问题,然后讲解历史指令的运用,接下来,我们会提一下“命令重定向”这个重要的观念,之后就是管线命令。这是个很有趣的话题,相信只要摸过计算机,对操作系统(不论是Linux、Unix还是Windows)有点概念的朋友大多听过这个名词,因为只要有操作系统就离不开Shell。不过,在讨论Shell之前,我们先来了解计算机的运作状况。举个例子,当您让计算机播放音乐的时候,您的计算机需要什么东西?
1. 需要声卡,否则怎么会有声音;
2. 操作系统的核心可以支持这个声卡,当然还需要提供声卡的驱动程序;
3. 需要用户(就是您)输入发声的指令。
这就是输出声音所需的基本步骤!也就是说,您必须输入一个指令,硬件才能通过该指令工作。那么硬件如何知道您下达的指令呢?这就是kernel(核心)的控制工作。也就是说,我们必须通过Shell将我们输入的指令与Kernel沟通,好让Kernel控制硬件正确无误地工作。
基本上,我们可以通过图10.1和图10.2来说明。
基本上,替我们工作的是硬件,而控制硬件的是核心,用户是利用Shell控制kernel提供的工具(Utility)来操控硬件正确工作。进一步来说,由于kernel听不懂人类语言,而人类也没有办法直接使用kernel的语言,所以两者的沟通就得藉由shell(其实早期的DOS的文字界面也是使用shell来沟通,那个shell就叫做command.com)。
从字面上的意思来看,kernel是核心的意思,而Shell是壳的意思,顾名思义,shell是最外层的东西,而kernel是最内层的东西。核心是操作系统的最底层,这个核心包括了各种支持硬件的工具,当然,如果您的硬件太新,kernel没有支持,那么,Shell能力再怎么强,也没有办法使硬件工作。简单地说就是,使计算机主机工作是核心的任务,但是操作核心来替用户工作,却是shell的工作。因此,有时候您的shell搞了半天,硬件却不能工作时,请看看您的核心是否正确。
为什么学习Shell
有人会问,已经有很多工具可以设定主机了,为什么还要学习shell?为何要花这么多时间学习指令,以X-Window按几个按钮不就可以搞定了吗?再次强调,X-Window和Web界面的设定工具(例如webmin)是很好用的工具,可以帮助我们很简易地设定主机,甚至是一些很高级的设定。但是,鸟哥在序篇中提到多次,X-Window界面虽然友好,功能虽然强大,Web界面的工具也可以提供很友善的服务,但毕竟它是整合的一个套件,并非一个完整的套件,所以某些时候当您升级或使用其他套件管理模块(例如Tarball而非RPM文件)时,就会造成设定的困扰。此外,远程联机时,文字界面的传输速度较快,而且,较不容易出现断线或者信息外流的问题,因此,shell是很有必要学习的一个工具。而且,它可以让您更进一步了解Linux,而不是只会按按鼠标。
有些人也可能会说,学这么多干什么,又不常用,也用不到。当您的主机一切安然无恙,您当然会觉得学这么多东西一点帮助也没有,可是,一旦某一天真的出了问题,是重新安装?还是追踪入侵来源进行漏洞的修补?或者干脆关闭工作站?所以,以鸟哥来看,多学一点总是好的,可以有备无患,甚至学得不精也没有关系,了解概念也行。
此外,要管理好主机,良好的shell编程知识是必要的。就鸟哥来说,我管理的主机不到10台,但如果每台主机都要花几十分钟来查阅日志文件及相关的信息,那么我可能会疯掉,而且没有效率。这时,如果能够藉由shell提供的命令重定向(或称数据流重定向)及管线命令,那么,只要花费不到十分钟就可以看完所有主机的重要信息。
学习shell的好处真是很多,如果您是位系统管理员,或者想管理系统,那么很有必要学习shell与shell scripts。
|
|