10-. Bash Command Line Interpreter

10-. Bash 命令行解释器

在 Linux 环境下,使用终端机下达指令的方式,就是通过 bash 环境来处理的。

1. 认识 BASH 这个 Shell

Shell是什么?

  • 我们必须要透过『 Shell 』将我们输入的指令与 Kernel 沟通,好让 Kernel 可以 控制硬件来正确无误的工作

User -> Shell -> Kernal -> Hardware

User <- Shell <- Kernal <- Hardware

X Window 与 web 接口的工具,他的接口虽然亲善,功能虽然强大, 但毕竟他是将所有利用到的软件都整合在一起的一组应用程序而已, 并非是一个完整的套件,所以某些时候当你升级或者是使用其他套件管理模块 (例如 tarball 而非 rpm 文 件等等) 时,就会造成设定的困扰了。甚至不同的 distribution 所设计的 X window 接口也都不相同, 这样也造成学习方面的困扰。

文字接口的 shell 就不同了!几乎各家 distributions 使用的 bash 都是一样的!如此一来, 你就能 够轻轻松松的转换不同的 distributions ,就像武侠小说里面提到的『一法通、万法通!』

Shell 文字接口的传输速度等 比 图形化接口更快!

有些朋友也很可爱,常会说:『我学这么多干什么? 又不常用,也用不到!』嘿嘿!有没有听过『书 到用时方恨少?』 当你的主机一切安然无恙的时候,您当然会觉得好像学这么多的东西一点帮助也 没有呀! 万一,某一天真的不幸给他中标了,您该如何是好?是直接重新安装? 还是先追踪入侵来 源后进行漏洞的修补?或者是干脆就关站好了?这当然涉及很多的考虑, 但就以鸟哥的观点来看, 多学一点总是好的,尤其我们可以有备而无患嘛!甚至学的不精也没有关系,了解概念也就 OK 啦! 毕竟没有人要您一定要背这么多的内容啦!了解概念就很了不起了!

2. BASH

Bash 是 Linux 文字接口通用的 Shell

2.1. 主要功能

  • 命令编修能力;

  • 命令与文件补全功能;

  • 命令别名设定功能;

  • 工作控制、前景背景控制;

  • 程序化脚本;通配符

2.2. 变量

  • HOME 家变量

  • PATH 环境变量

  • $? 为变量,是前一个指令执行完毕后的回传值。在 Linux 回传值为 0 代表执行成功;

3. 数据流重导向

  • redirect

我们执行一个指令的时候,这个指令可能会由文件读入资料,经过处理之后,再将数据输出到屏幕上。EX: standard output 与 standard error output 分别代表『标准输出(STDOUT)』与『标准错误输出 (STDERR)』 。

3.1. standard output 与 standard error output

标准输出指的是『指令执行所回传的正确的讯息』,而标准错误输出可理解为『 指令执 行失败后,所回传的错误讯息』

4. 管线命令

  • pipe

管线命令使用的是『 | 』这个界定符号

4.1. EX

假设我们想要知道 /etc/ 底下有多少文件,那么可以利用 ls /etc 来查阅,不过, 因为 /etc 底下的文 件太多,导致一口气就将屏幕塞满了~不知道前面输出的内容是啥?此时,我们可以透过 less 指令 的协助,利用:

[dmtsai@study ~]$ ls -al /etc | less

如此一来,使用 ls 指令输出后的内容,就能够被 less 读取,并且利用 less 的功能,我们就能够前 后翻动相关的信息了

4.2. 一般命令

  • 截取命令:cut,grep

  • 排序命令:sort,wc,uniq

  • 双向重导向:tee

  • 字符转换命令:tr,col,join,paste,expand

  • 分区命令:sllit

  • 参数代换:xargs

Last updated