一、什么是 Shell
Shell 是用户和 Linux 内核交互的程序,既是命令交互界面,也能写.sh脚本程序;系统默认主流为 Bash。
二、Shell 常见类型
主流:bash(系统默认)、sh、dash、csh、ksh
用户默认 Shell 配置在
/etc/passwd最后一列;输入/对应shell名可手动切换,exit退出。脚本首行
#!/bin/bash指定脚本解释器。
三、Shell 父子进程
打开终端默认是父 Shell;输入
bash会生成子 Shell。查看进程树:
ps --forest,PID 为进程号,PPID 是父进程号。子 Shell 单独环境,执行
exit逐层退出回到父 Shell。判断是否存在子 Shell:
echo $BASH_SUBSHELL,0 = 无,大于 0 = 有子 Shell。
四、Shell 几种运行模式
单行多命令:用
;分隔,顺序执行,不生成子 Shell。命令分组
(命令):开启子 Shell 运行。后台运行:命令末尾加
&,不占用终端;jobs查看后台任务,ps查看进程。协程
coproc:后台创建子 Shell 并行执行任务,可自定义协程名称。
五、内建命令 vs 外部命令
外部命令:独立程序(如 ps),存放在 /bin、/usr/bin,执行会新建子进程,速度慢;可用
which查找路径。内建命令:集成在 Shell 内部,无需新建进程,执行更快(cd、exit、history、alias、echo、pwd);
type -a可区分命令类型。
六、常用内建命令实操
1. history 历史命令
查看历史指令:
history历史暂存内存,关闭终端才写入隐藏文件
.bash_history;history -a:强制把内存命令写入文件;快速复用:
!!执行上一条、!编号执行对应历史命令;对比:直接
cat .bash_history只能看到上次关机前记录。
2. alias 命令别名
alias -p:查看系统预设别名(ll、ls、grep 带颜色等);自定义别名:
alias 别名='原命令',仅当前 Shell 生效。