进程
程序在内存中执行称为进程
进程:在每个进程看来,当前主机上只有内核和当前进程
进程是程序的副本,进程是程序的执行实例。
用户工作环境:
bash:
#:管理员
$:普通用户
shell,子shell进程:bash中可以在开启一个bash进程
bash特性:
- 命令历史、命令补全
- 管道、重定向
- 命令别名
- 命令行编辑
- 命令行展开
- 文件名通配
- 变量
- 编程 (shell脚本)
1. 命令行编辑:
1) 光标跳转:
Ctrl +a:跳到命令行首
Ctrl + e:跳到命令行尾
Ctrl +右箭头:向右跳一个单词
Ctrl + 左箭头:向左跳一个单词
Ctrl +f :向前一个字符
Ctrl + b:向后一个字符
2) 删除内容:
Ctrl +u:删除光标至命令行首的内容
Ctrl +k:删除光标至命令行行尾的内容
3) other:
Ctrl +l :清屏
2. 命令历史:
上下箭头切换命令历史
1) 查看命令历史:history
-c:清空命令历史
-d OFFSET [n]:删除指令位置的命令历史
-w:保存命令历史至历史文件中(.bash_history)
环境变量
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
2) 命令历史的使用技巧:
- !n:执行命令历史中第n条命令
- !-n: 执行命令历史中倒数第n条命令
- !!: 执行上一条命令
- !string:执行命令历史中最近一个以指定字符串开头额命令
- !$:引用前一个命令的最后一个参数;
- Esc . :引用前一个命令的最后一个参数;
- Alt + . :引用前一个命令的最后一个参数;
3) 命令补全:
PATH:环境变量下查找
Tab:敲一下补全唯一命令,两下显示开头的所有命令
4) 路径补全:
打头的路径下查找
Tab:敲一下补全唯一路径,两下显示开头的所有路径
3. 命令别名
alias CMDALIAS='COMMAND [option] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅在当前shell进程
ualias CMDALIAS:取消命令别名
\CMD:使用命令本意
4. 命令替换 $(COMMAND)\反引号 `COMMAND`
把命令中某个子命令替换为其执行结果的过程
echo "This directory is (date +%F-%H-%M-%S).txt
5. bash支持的引号
` `:命令替换
" ":弱引用,可以实现变量替换
' ': 强引用,不完成变量替换
6. 文件名通配,globbing
- : 任意长度的任意字符
?:任意单个字符
[ ]:匹配指定范围内的任意单个字符
[abc],[a-m],[a-z],[A-Z],[0-9],[a-zA-Z]
[:space:]:空白字符集
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum: ]:数字和大小写字母
[^]:匹配指定范围之外的任意单个字符
[[:alpha:]]*[[:space:]]*[^[:alpha:]]:字母开头,非字母结尾,中间有空格。
man 7 glob 获取特殊字符说名