一、bash特性:
1、命令别名
获取当前用户可用的别名的定义
2、命令历史
shell进程会保存其会话中用户曾经执行过的命令;命令通过其“历史文件”来持久保存此前执行过的命令;每个用户都有其自己专用的历史文件;
HISTSIZE:shell进程的缓冲区保留的历史命令的条数;
HISTFILESIZE:命令历史文件可保存的历史命令的条数;
history -c:清空命令历史;
history -d OFFSET:删除指定的条目;
3、快捷键
Ctrl+a:跳至命令行首;
Ctrl+e:跳至命令行尾;
Ctrl+k:删除光标所在处至尾部的内容;
Ctrl+u:删除行首至光标所在处的内容;
4、命令补全和路径补全
命令补全:
shell程序在接收到用户执行命令的请求且分析完成之后,最左侧字符串将被当作命令去查找;
查找机制:
(1) 查找内部命令;
(2) 查找外部命令:
1、去$PATH变量所指定的各路径下,自左而右逐个搜索各目录下的文件名;
2、给定的打头的字符串如果能惟一标识某命令程序文件的文件名,则直接补全;
3、不能惟一标识,再击tab可给列表;
4、错误:没有任何命令可被此打头字符串标识;
路径补全:
在给定的起始路径的上级目录下,以对应路径下的打头字符串来逐一匹配上级目标下的每个文件:
惟一标识:tab补全;
不能惟一标识:tab, tab给出列表;
错误路径:没有响应;
5、命令行展开
把命令行的给定的特殊符号自动替换为相应字符串的机制;
~: 自动替换为用户家目录;
~USERNAME:自动替换为指定用户的家目录;
{}:可承载一个以逗号分隔的路径列表,能够将其展开为多个独立路径;
6、命令的执行状态结果
命令的正常输出结果:命令的返回值;
通过引用来保存下来或直接调用——”命令引用“
7、变量
程序:指令+数据
数据:文件、变量;
变量:内存空间,有名称,名称即为变量名,对应的内存空间中的数据即为变量的值;
变量赋值:左边=右边(把右边存储到左边指向的内存空间)
二、命令执行状态返回值
用 $? 取出最后一个带返回值的函数调用.
如果你确定某个命令或函数有返回值,就可以在调用这条命令后用 $? 取出返回值并处理.在bash中习惯用返回值0代表一切正常.
比如最常用的 ls 命令,有三个返回值: (翻译自man手册)
0 : 一切正常
1: 小问题 (比如无法访问某个子目录)
2: 大麻烦 (比如找不到命令所需参数)
在终端执行了 ls 命令后,就可以用 echo $? 来查看返回值.
注意 $? 取出的是最后一个返回值,意思是如果某个命令没有返回值,那么 $? 会返回最后一个有返回值的命令的返回值.
三、命令行展开所涉及的内容及其示例演示
【root@dd ~】# mkdir /etc/fr/{1,2,3}
【root@dd ~】# tree /etc/fr
/etc/fr
├── 1
├── 2
├── 3