什么是shell?
字面意思:壳,充当人机交互的翻译官,当用户输入一条命令,shell就会解析。shell位于操作系统外层,负责与用户交互。
shell类型:可以查看/etc/shells文件,bash shell作为系统的默认shell,比较流行,bash有众多特性。
查看系统当前shell:#echo $SHELL
- 命令历史记录
- 命令/目录补全功能
- 命令行展开
- 命令的执行结果
- 快捷键
- glob通配符
- 多命令执行
- 命令历史记录
shell进程会将保存此前用户提交执行过的命令,保存在用户家目录:~/.bash_history
查看:#history
可以通过修改环境变量实现history的配置:
HISTSIZE:shell进程保存的历史条数,默认1000
HISTFILE:保存数据的文件- 用法:
history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
-c:清空历史
-d offset:删除指定命令历史
-r:从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中
n:显示历史的第几条命令 - 调用命令历史列表中的命令:
!#:再一次执行历史列表中的第#条命令;
!!:再一次执行上一条命令;
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令; - 调用上一条命令的最后一个参数
快捷键:esc,. #先按ESC键再按.号键
特殊字符: !$
- 用法:
- 命令/目录补全功能
在mini系统安装,参数不能补齐,需要安装一个包:bash-completion- 命令补齐:Tab键补齐
命令查找机制: 查找内部命令--> 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名; - 路径补齐:
在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件:
tab:如果是唯一标识,则直接补全,否则,再按一次tab会给出列表供选择
- 命令补齐:Tab键补齐
- 命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径; - 命令的执行结果
判断命令的结果是否执行成功,通过返回状态码判断,命令执行完后,状态码保存在bash的特殊变量中:$?
0:表示成功
1~255:表示失败 - 快捷键
Ctrl+a:跳转至命令行行首 ==home键 Ctrl+e:跳转至命令行行尾 ==end键 Ctrl+u:删除行首至光标所在处之间的所有字符; Ctrl+k:删除光标所在处至行尾的所有字符; Ctrl+l:清屏,相当于clear Ctrl+w:在光标处起往前删除一个单词 Ctrl+<-|->:Ctrl加左右键快速往前完后移动光标
- glob通配符
匹配模式:元字符
*:匹配任意长度的任意字符
pa*, *pa*, *pa, *p*a*
pa, paa, passwd
?:匹配任意单个字符
pa?, ??pa, p?a, p?a?
pa, paa, passwd
[]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
例如:匹配pa##的文件,2开头的三位数
pa[0-9][0-9], 2[0-9][0-9]
[^]:匹配指定范围外的任意单个字符
[^[:upper:]]
[^0-9]
[^[:alnum:]]
- 多命令执行
COMMAND1; COMMAND2; COMMAND3; ...
逻辑关系:
与: &&
或: ||
非: !
COMMAND1 && COMMAND2
COMMAND1为“假”,则COMMAND2不会再执行;
否则,COMMAND1为“真”,则COMMAND2必须执行;
COMMAND1 || COMMAND2
COMMAND1为“真”,则COMMAND2不会再执行;
否则,COMMAND1为“假”,则COMMAND2必须执行;
! COMMAND:COMMAND为真则为假,反之亦然。
原文地址:http://blog.51cto.com/12580678/2337274
时间: 2024-11-13 08:21:04