了解了基本的Linux文件文件系统的概念后,我们将更深入的了解一下Linux的其他方面的内容,那就是我们所使用的用户接口,也就是大家常听到的 『Shell』 ,『这个shell并不是黑客反弹的shell』,而是一种Linux的命令接口,在 Linux 的世界中,默认使用的是 GNU 开发出来的 shell ,称为 BASH Shell,简单来说,我们之前使用的几个命令都是 bash 管理的,除此之外,bash还具备记录命令、文件或命令的补全功能、环境变量的使用等,下面我们会介绍bash的发展以及常用的特性.本章的内容,是一个呈上启一下的东西,在以后的主机维护中作用很大,务必掌握.
♥ 文章声明 ♥
该系列文章部分文字描述,整理于以下文献,化繁为简.
《鸟哥的Linux私房菜 (基础学习篇 第三版)》 - 作者:鸟哥
《Linux就该这么学》 - 作者:刘遄
硬件内核与Shell的关系
我们都知道,管理整个计算机硬件的其实是操作系统的内核(kernel),这个内核是需要被保护的,设想一下如果我们不对内核进行保护的话,每个人都可以随意操作,那么是不是很糟糕,『用不了多久,你的系统就完犊子了』,根据这种请款,我们就开发出了,用户接口,简称Shell,一般使用者是通过 shell 来跟内核沟通的,以让内核达到我们所想要达到的工作,那么系统有多少 shell 可用呢? 为什么我们要使用 bash 呢? 接下来我们就开始细细的研究一下吧.
有时候我们想给系统下达命令,我们必须通过Shell与内核进行通信,好让内核可以正确无误的进行工作,其实Shell的功能只是提供用户操作系统的一个接口,因此这个Shell程序需要可以调用其他软件才好,我们在前面提到过的很多命令,包括 man, chmod, chown, vi, fdisk, mkfs 等,这些命令都是独立的应用程序,但是我们可以通过Shell程序(就是命令行模式)来操作这些应用程序,让这些应用程序调用内核,来运行所需的工作.
换句话说,只要能够操作应用程序的接口都能够称为Shell程序,狭义的Shell程序指的是命令行方面的软件,包括本章要介绍的 bash 等,广义的Shell程序则包括图形接口的软件,例如 X-Window 因为图形接口其实也能够操作各种应用程序来调用内核工作,不过我们常用的Shell还是Bash,因为其简洁明了,方便管理.
系统中的默认合法Shell
知道什么是 Shell 之后,那么我们来了解一下Linux系统可以使用的Shell接口,其实Linux系统有很多Shell,由于早年的 Unix 年代,发展者众多,又因为Linux起源于Unix,所以由于 shell 依据发展者的不同就有许多的版本,例如常听到的 Bourne SHell (sh) 、在 Sun 里头默认的 C SHell、 商业上常用的 K SHell、还有 TCSH 等,每一种 Shell 都各有其特点,至于 Linux 使用的这一种版本就称为『 Bourne Again SHell (简称 bash) 』,这个 Shell 是 Bourne Shell 的增强版本,也是基准于 GNU 的架构下发展出来的.
下面我们先来介绍一下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系统中,常用的shell可以在/etc/shells文件中查到.
● /bin/sh (已经被 /bin/bash 所取代)
● /bin/bash (就是 Linux 默认的 shell)
● /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
● /bin/tcsh (整合 C Shell ,提供更多的功能)
● /bin/csh (已经被 /bin/tcsh 所取代)
● /bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
上面我们可以看到有很多Shell的程序,我们作为初学者,最应该掌握的就是Bash,因为他是系统的默认Shell,还有一些特殊的Shell这里没有列出,比如:/sbin/nologin这个无法登陆的Shell.
Bash-Shell的常用功能
既然 /bin/bash 是 Linux 默认的 shell 那么总是得了解一下这个Shell有哪些特性吧,bash 是 GNU 计划中重要的工具软件之一,目前也是 Linux 发行版的标准 shell ,bash 兼容于 sh ,下面我们看一下bash到底有哪些特点吧,好让我们以后的使用更加得心应手.
● 命令记忆功能(history)
在默认的Linux环境中,我认为Bash最赞的功能,就是它的命令记忆功能了,其默认的记忆功能,可达到记忆1000条命令,也就是说,你曾经执行过的命令1000条以内会被记录下来,超出部分会自动清除.
你或许会有个疑问,命令被记录到哪里了呢?其实我们的命令在退出终端是是记录在内存中的,当用户正式退出终端是会自动写入到,自己家目录,名字为.bash_history文件当中.虽然我们可以自己设置记录条数,但是建议设置条目小一些,因为一旦你的系统被黑客入侵,那么他可以通过翻阅你的命令执行找到一些核心数据.
● 命令与文件补全(TAB)