10.1 认识BASH这个shell
10.1.1 硬件、核心与shell
当你要计算机传输出来“音乐”的时候,你的计算机需要什么东西呢?
1. 硬件:当然就是需要你的硬件有“声卡芯片”这个配备,否则怎么会有声音;
2. 核心管理:操作系统的核心可以支持这个芯片组,当然还需要提供芯片的驱动程序;
3. 应用程序:需要使用者 (就是你) 输入发生声音的指令
必须要“输入”一个指令之后,“硬件”才会通过你下达的指令来工作。下达指令就是kernel的控制工作,必须要通过“shell”将我们输入的指令与kernel沟通,好让kernel可以控制硬件来正确无误的工作。
只要能够操作应用程序的接口都能够称为壳程序。狭义的壳程序指的是命令行方面的软件,包括本章要介绍的 bash 等。 广义的壳程序则包括图形接口的软件!因为图形接口其实也能够操作各种应用程序来调用核心工作。
10.1.2 为何要学命令行的shell?
X Window 与 web 接口的工具,他的接口虽然好友,功能虽然强大, 但毕竟他是将所有利用到的软件都整合在一起的一组应用程序而已, 并非是一个完整的套件,所以某些时候当你升级或者是使用其他套件管理模块 (例如 tarball 而非 rpm 文件等等) 时,就会造成设置的困扰了。甚至不同的 distribution 所设计的 X window 接口也都不相同,这样也造成学习方面的困扰。
命令行的shell,就可以转换不同的distributions。
远端管理:命令行快
Linux 的管理常常需要通过远端连线,而连线时命令行的传输速度一定比较快, 而且,较不容易出现断线或者是信息外流的问题。
10.1.3 系统的合法 shell 与 /etc/shells 功能
目前我们的 Linux (以 CentOS 7.x 为例),至少就有下面这几个可以用的 shells:
/bin/sh (已经被 /bin/bash 所取代)
/bin/bash (就是 Linux 默认的 shell)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已经被 /bin/tcsh 所取代)
10.1.4 Bash shell 的功能
bash 是 GNU 计划中重要的工具软件之一,目前也是 Linux distributions 的标准 shell 。 bash 主要相容于 sh,并且依据一些使用者需求而加强的 shell 版本。不论你使用的是那个 distribution ,你都难逃需要学习 bash 的宿命。bash 主要的优点有下面几个:
命令编修能力 (history):
在很多distribution 里头,默认的指令记忆功能可以到达 1000 个!也就是说,你曾经下达过的指令几乎都被记录下来了。
这么多的指令记录都存在主文件夹内的.bash_history中,需要留意的是,~/.bash_history记录的是前一次登陆以前所执行过的指令, 而至于这一次登陆所执行的指令都被暂存在内存中,当你成功的登出系统后,该指令记忆才会记录到 .bash_history 当中。
命令与文件补全功能: ([tab] 按键的好处)
[Tab] 接在一串指令的第一个字的后面,则为命令补全;
[Tab] 接在一串指令的第二个字以后时,则为“文件补齐”!
若安装 bash-completion 软件,则在某些指令后面使用 [tab] 按键时,可以进行“选项/参数的补齐”功能!
命令别名设置功能: (alias)
假如我需要知道这个目录下面的所有文件 (包含隐藏文件) 及所有的文件属性,那么我就必须要下达“ ls -al ”这样的指令串。
alias lm='ls -al'
工作控制、前景背景控制: (job control, foreground, background)
程序化脚本: (shell scripts)
万用字符: (Wildcard)
除了完整的字串之外, bash 还支持许多的万用字符来帮助使用者查询与指令下达。