默认shell
- 默认系统shell:存储查看位置在/bin/sh
- 默认交互shell:存储查看位置在/etc/passwd
shell父子关系
- 在第一个shell中输入bash即可打开新的shell,此时的新shell就作为老shell的子进程
- 命令参数修改启动方式
- -c string 从string中读取命令并处理
- -i 启动能够接收用户输入的交互shell
- -l 以登陆shell形式启动
- -r 启动受限shell,限制在默认目录
- -s 从标准输入读取命令
- ps --forest可以直观查看父子关系
进程列表
- 使用(shell1;shell2 ;shell3 ;):开启子进程来执行这个命令列表
例如:
(ls;pwd;cd ../;)
是否生成了子shell,使用环境变量的命令$BASH_SUBSHELL进行查询
结果为0则未生成子进程,为非0数字则生成子进程。
例如:
(ls;pwd;cd ../;($BASH_SUBSHELL))
结果输出2
后台模式
- 可以高效的使用使用子shell,后台模式中运行命令可以在处理命令的同时让出CLI
-
使用方式在命令后置&
例如:
sleep 1000&
执行此命令后可用ps -f查看
- 显示后台命令可以使用jobs
- -l:在默认的显示基础上可以显示PID
后台命令常用于文件解压
(tar -cf Rich.tar /home/rich ; tar -cf My.tar /home/christine)&
协程
- 可以同时做两件事
-
使用方法coproc command/command list
例如:
coproc { sleep 300; }&
外部命令
- 定义:文件系统命令,存在于bash shell之外,通常位于/bin、/usr/bin、/sbin或/usr/sbin
- 可以通过which 和type进行查找
which ps / type ps可查找ps命令 - 执行过程:由父进程发出ps命令,子进程执行ps命令。(也成为衍生forking)
内建命令
- 不需要子进程来进行执行 例如 cd , exit
- 可通过type进行检验,返回 is a shell builtin
- type命令参数:
- -a :可针对即是内建命令也是外部命令进行查看
- 若干个内建命令
1.history 查询历史命令
命令历史记录被保存在隐藏文件.bash_history,当shell退出时才被写入到历史文件中。
-a :会强制进行写入到.bash_history
-n :强制重新读取.bash_history文件,更新终端会话的历史记录
2.!! 唤出刚用过命令来使用!20:编号为20的命令从命令历史记录中被取出
命令别名
alias
- -p :查询当前可用的别名
2.自定义别名创建
例如:
alias li='ls -li'
注意:别名仅在它所被定义的shell进程中有效
网友评论