1. shell的类型
bash
tcsh
dash
- 默认的系统shell
sh
,一般软连接到bash
(也有软连接到dash
) - 用户登录系统的默认shell在
/etc/passwd
文件的第7个字段中记录(这里说的shell与sh
不同)
2. shell的父子关系
- 在一个shell中继续运行shell,可以形成shell间的嵌套关系(父子结构)
exit
退出当前shell- 可以在一行中指定一系列的命令,多个命令用
;
隔开(命令列表) - 将命令列表用
()
括起来,则构成进程列表(系统会创建子shell运行进程列表)$BASH_SUBSHELL
环境变量可以看到当前shell的层级(0父shell,1子shell,2孙子shell…)- 进程列表可以嵌套
- 命令后面加
&
可以后台运行(进程列表也可以加) jobs
显示后台作业信息-l
显示进程pid
- 协程(在后台生成一个子shell,并在这个子shell中执行命令)
- 默认名写法
coproc sleep 10
- 自定义名写法
coproc My_Job { sleep 10; }
- 默认名写法
3. 理解shell的内建命令
- 外部命令会创建一个子进程运行(衍生),内建命令不会,所以内建命令效率更高
which
用来查找一个命令的绝对路径type
查看一个命令是否为内建命令-a
如果该命令有多个版本则都显示
history
历史命令列表~/.bash_history
历史命令保存文件-a
强制刷新文件-n
强制读取文件!!
最近一条命令!-n
最近第n条命令!n
第n条命令
alias
用来设置指令的别名- 例:
alias ll=‘ls -l’
-p
查看当前可用的别名- 使用绝对路径的命令则不会被alias
- 例:
unalias
解除别名