第389集系统入门-linux系统Bash初始
系统入门 - Linux系统Bash初始
1. Linux系统终端概述
服务器终端切换: Ctrl + Alt + F1 … F6
虚拟机终端切换: Ctrl + Shift + Alt + F1 … F6
虚拟终端由mingetty程序生成
1 | //物理机执行为本地终端 |
2. Linux系统Bash管理
简单的说, Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
Linux, Shell也有多种不同的版本。主要有下列版本的Shell:
BASH Shell: 是一个为GNU计划编写的Unix shell, 是许多Linux发行版的默认Shell
C Shell: 是SUN公司Shell的BSD版本。
Z Shell: 它集集成bash、ksh的重要特性,同时又增加了自己独有的特性。
还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等, Shell Script大致都类同,当您学会一种Shell以后,其它的Shell很快就上手, 大多数的时候, 一个Shell脚本 通常可以在很多种Shell上使用。
查看当前使用的shell
1 | [root@liyanzhao ~]# echo $SHELL |
查看Linux可用的 shell
1 | [root@liyanzhao ~]# cat /etc/shells |
Bash Shell提示符
1 | [root@liyanzhao ~]# echo $PS1 |
Shell 语法
命令行bash shell, 为用户提供输入, 执行命令的界面
1 | //等待用户输入,执行命令, $ = 普通用户, # = root用户(超级管理员) |
命令: 命令的主体
- 一个命令有多个选项, 多个选项可以合并在一起
选项: 用于调节命令的具体功能
- 以 “-“引导短格式选项(单个字符),例如”-l”
- 以 “–”引导长格式选项(多个字符),例如”–color”
- 多个短格式选项可以写在一起,只用一个”-“引导,例如”-al”
参数: 命令操作的对象,如文件、目录名等
命令必须开头, 选项和参数位置可以发生变化
我们可以使用SHELL实现对Linux的大部分管理
- 文件管理
- 权限管理
- 用户管理
- 磁盘管理
- 网络管理
- 软件管理
…
使用Shell的方式
- 输入命令 –> 效率低 –>适合少量的工作
- Shell Script –> 效率高–>适合复杂重复性的工作
BASH所支持的功能
- 命令行编辑快捷键
- 内部命令与外部命令
- 命令补全与路径补全
- 命令别名与命令历史
- 转义字符与路径展开
- 通配符与特殊字符
- 重定向与管道技术
2.1. Bash特性:命令补全
通过上下方向键来调取过往执行过的Linux命令;
命令或参数仅需输入前几位就可以用Tab键补全;
tab键可以实现命令补全, 路径补全和命令实现方式一致, 工作中我们经常用到tab补全, 减少执行命令以及路径出错率。
- 命令补全
- 提示功能
- 减少出错
1 | //查看ip时忘记具体了命令 |
2.2. Bash特性:命令快捷键
终端快捷键的使用可以帮助我们大大提升效率
| 快捷键 | 功能 |
|---|---|
| Ctrl + A | 光标跳转至正在输入的命令行的首部 |
| Ctrl + E | 光标跳转至正在输入的命令行的尾部 |
| Ctrl + C | 终止前台运行的程序 |
| Ctrl + D | 在shell中,ctrl-d表示推出当前shell。 |
| Ctrl + Z | 将任务暂停,挂至后台 |
| Ctrl + L | 清屏,和clear命令等效。 |
| Ctrl + K | 删除从光标到行末的所有字符 |
| Ctrl + U | 删除从光标到行首的所有字符 |
| Ctrl + R | 搜索历史命令, 利用关键字 |
//在命令行前加面加 “#” 则该命令不会被执行
History查看系统命令历史
追溯之前发生情况
命令选项
-w保存命令历史到历史文件-c清空命令历史记录, 不会情况文件-d删除命令历史的第 N 条行
history命令历史相关快捷键
1 | //使用双 !! 可执行上一条命令 |
2.3. Bash特性:命令别名
命令别名将用户经常使用的复杂命令简单化, 可以用”alias 别名名称=命令”命令创建属于自己的命令别名, 若要取消一个命令别名,则是用unalias 别名名称命令。
1 | //1.定义临时别名, if1为查看eth0网卡别名 |
2.4. Bash特性:命令流程
当我们执行一个命令, 整个命令执行流程如下:
- 判断命令是否通过绝对路径执行
- 判断命令是否存在别名
- 判断用户输入的是内部命令还是外部命令
- 内部命令直接执行, 外部命令检测是否存在缓存
- 检测PATH路径, 有执行, 无报错
- 内部命令: shell程序自带的命令。
- 外部命令: 在系统PATH变量的某个路径下的可执行程序。
使用type命令检测用户输入的命令属于内部命令还是外部命令。
1 | //cd命令属于shell内部命令 |
PATH变量定义的路径, 作用是告诉Bash执行的外部命令存放的位置,Bash会在这些路径中进行逐个扫描。
1 | //echo所见即所得 |
事实上执行过的外部命令都会保存在内存缓存中, 当再次执行相同的命令, 会通过缓存调取执行, 也就意味着不会搜索PATH路径。
1 | //表缓存命令所在位置 |
总结
当我们执行了一个ping命令之后, 整个命令执行的流程步骤如下:
- 检查执行的是否是绝对路径执行
- 检查该ping命令是否存在别名
- 检查该ping命令是内部命令还是外部命令
- 如果是内部指令直接执行, 如果是外部命令
- 检测该命令是否有缓存,如果没有,查找PATH变量
- 检查PATH路径直到查找到该命令然后执行
- 如果没有找到该命令则返回错误。command not found
2.5. Bash特性:路径展开
Linux Shell下路径展开用花括号包括, 逗号分隔, 这样花括号里的内容会被展开形成列表。
1 | [root@liyanzhao ~]# mkdir /tmp/zz/a/b /tmp/yy/a/b -pv |
思考题
在/tmp 路径下创建以下目录
1 | etc/init.d |
2.6. Bash特性:转义字符
Shell解释器提供了非常丰富的转义字符, 来实现字符处理以及命令替换。
4类常用转义字符
- 反斜杠(\): 使反斜杠后面的一个变量变为字符串。
- 单引号(’’): 转义其中所有的变量为单纯的字符串。
- 双引号(””): 保留其中的变量属性,不进行转义处理。
- 反引号(`): 把其中的命令执行后返回结果。
1 | //将特殊字符转换为正常字符 |
2.7. Bash特性:获取帮助
1. 通过man命令获取帮助
手册的常见级别: 1(普通用户命令手册) , 5(配置文件手册), 8(管理员命令手册)
| 快捷键 | 功能 |
|---|---|
| g | 回到手册的顶部 |
| G | 去到文档的底部 |
| / | 输入要搜索的关键字,进行文档搜索 |
| q | 退出文档 |
| 回车 | 往下滚动一行 |
| 空格键 | 往下翻一页 |
1 | man -a passwd |
2. 通过info或pinfo获得帮助
首页寻找Textinfo文档,如果没有,强制打开对应的Man文档
与vi风格类似,快捷键:
| 快捷键 | 功能 |
|---|---|
| 空格 | 翻页 |
| HOME | 返回页面顶部 |
| END | 返回页面底部 |
| 上箭头 | 光标上移动一行 |
| 下箭头 | 光标下移动以行 |
| 左箭头 | 返回上一章节 |
| 右箭头 | 浏览光标所在章节 |
| d | 回到手册首页 |
| q | 退出手册 |
1 | //强制打开指定级别的man文档 |
架构师级别文章


