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