Linux bash特性
命令补全
shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令。而在很多情况下,我们对某些命令可能会记得不牢固,从而敲错,这个时候就可以用上bash的命令补全机制了。
命令查找机制:
- 查找内部命令
- 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名
- 给定的起始字符串如果能惟一标识某命令程序文件,则直接补全。
- 不能惟一标识某命令程序文件,再击tab键一次,则会给出列表。
路径补全
在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件
tab:如果能惟一标识,则直接补全,否则,再一次tab,给出列表。
命令行展开
命令行展开也为bash的一大特性,即使用带~和{}
- ~:自动展开为用户的家目录,或指定的用户的家目录
- {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。
命令的执行状态结果
Linux的命令执行,无非两种结果,即成功或者失败,而在bash里会用返回值0-255来标识命令的执行状态。
0:成功
1-255:失败
在命令执行完成之后,其状态返回值保存于bash的特殊变量$?中。
快捷键
- Ctrl+a:跳转至命令行行首
- Ctrl+e:跳转至命令行行尾
- Ctrl+u:删除行首至光标所在处之间的所有字符
- Ctrl+k:删除光标所在处至行尾的所有字符
- Ctrl+l:清屏,相当于clear
命令行历史
shell进程会在其会话中保存此前用户提交执行过的命令。而命令历史主要使用命令history来实现。
命令用法:
history
- -c: 清空命令历史
- -d :删除指定命令历史
- -r: 从文件读取命令历史至历史列表中
- -w:把历史列表中的命令追加至历史文件中
- history #:显示最近的#条命令
日常使用:
- !#:再一次执行历史列表中的第#条命
- !!:再一次执行上一条命令
- !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
- 调用上一条命令的最后一个参数
- 快捷键:ESC, .
- 字符串:!$
我们还可以通过修改环境变量来定制history命令的一些功能
- HISTSIZE:指定shell进程可保留的命令历史的条数
- HISTFILE:指定持久保存命令历史的文件.bash_history
- HISTFILESIZE:指定命令历史文件的大小
命令别名(alias)
命令别名即可以在bash中为我们经常使用的一些命令定义某个简短的命令,从而增加工作效率,比如我们要打开网卡文件,即可以将vim /etc/sysconfig/network...等一大串的命令即参数直接定义为vimnet即可。这样会方便管理惭怍,除此之外,linux自身也会自带一些命令别名。
alias
显示当前shell进程所有可用的命令别名;
文件名通配(globbing)
globbing:文件名通配(整体文件名匹配,而非部分)
匹配模式:元字符
- *:匹配任意长度的任意字符
- ?:匹配任意单个字符
- []:匹配指定范围内的任意单个字符
- 有几种特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
- [^]:匹配指定范围外的任意单个字符
[^[:upper:]]
[^0-9]
[^[:alnum:]]

浙公网安备 33010602011771号