shell分类
- GUI:Gnome,KDE,Xfce
- CLI:sh,csh,ksh,bash,tcsh,zsh
进程
在每个进程看来,当前主机上只存在内核和当前进程,进程是程序的副本,进程是程序执行实例。
shell与子shell
每执行一次bash创建一个子bash,执行一次exit,退出一层子bash。
bash的特性
- 命令历史
- 管道,重定向
- 命令别名
- 命令行编辑
- 命令行展开
- 命令行通配
- 变量
- 编程
- 命令,路径补全
bash特性详解
命令行编辑
快捷键 |
作用 |
Ctrl+a |
跳到命令行首 |
Ctrl+e |
跳到命令行尾 |
Ctrl+← |
跳转到光标所在单词的上一个单词开头 |
Ctrl+→ |
跳转到光标所在单词的下一个单词开头 |
Ctrl+u |
删除光标至命令行首的内容 |
Ctrl+k |
删除光标至命令行尾的内容 |
Ctrl+L |
清屏 |
命令历史
选项 |
作用 |
-c |
清空命令历史 |
-d OPSET [n] |
删除指定位置的历史(该位置变成history) |
-w |
保存命令历史至历史文件中(家目录/.bash_history) |
在环境编码中的HISTSIZE修改记录命令历史的条数(默认值为1000条),使用echo $HISTSIZE查看
选项 |
作用 |
!n |
执行命令历史中的第n条命令 |
!-n |
执行命令历史中的倒数第n条命令 |
!! |
执行上一条命令 |
!string |
执行命令历史中最近一个以指定字符串开头的命令 |
!$ |
引用前一个命令的最后一个参数(Esc松开按.,按着Alt加.) |
命令,路径补全
- 一下Tab键,补全命令或路径
- 两下Tab键,显示以输入字符串开头的全部命令或路径
命令别名
- alias CMDALIAS = ‘COMMAND [option] [arguments]’
给COMMAND设置别名。
- 注意:在shell中定义的别名仅在当前shell生命周期中有效,别名的有效范围仅为当前的shell进程。
- unalias CMDALIAS:取消别名
命令替换
$(COMMAND),`COMMAND`——命令替换
bash支持的引号
``——命令替换
""——弱引用,可以实现变量替换
''—— 强引用,不完成变量替换
- 例如
echo "today is $(date)"
文件名通配
通配符 |
特点 |
* |
匹配任意长度的任意字符 |
? |
匹配任意单个字符 |
[ ] |
匹配指定范围内的任意单个字符。例如[a-zA-Z]表示字母 |
[^] |
匹配指定范围之外的任意单个字符。例如[^0-9]表示非数字 |
字符集合 |
含义 |
[[:spac:]] |
空白字符 |
[[:punct:]] |
标点符号 |
[[:lower:]] |
小写字母 |
[[:upper:]] |
大写字母 |
[[:alpha:]] |
大小写字母 |
[[:digit:]] |
数字 |
[[:alnum:]] |
数字和大小写字母 |
[^[]] |
取反操作 |