新闻详情

新闻详情

首页 / 资讯中心 / 详情

理解Shell

发布时间:2026/7/7 4:53:44
理解Shell
一、Xshell 完整实操流程1. Shell 类型相关实操(1) 查看系统全部 Shell 程序命令ls -LF /bin/*sh(2) 查看用户默认 Shell 配置命令cat /etc/passwd | grep 你的用户名(3) 切换其他 Shell 并退出命令/bin/dashexit2. Shell 父子进程实操(1) 查看顶层父 Shell 进程ps --forest(2)创建多层子 Shellbashps --forestbashps --forest(3)逐层退出子 Shellexitps --forestexitps --forest3. Shell 运行模式实操(1) 顺序命令分号无 SubShell)pwd; ls; cd ./directory/; pwd; echo $BASH_SUBSHELL(2)括号子 Shell 分组单层子 shell(pwd; ls; cd ./directory/; pwd; echo $BASH_SUBSHELL)嵌套多层子 shell(pwd; ls; cd ./directory/; pwd; (echo $BASH_SUBSHELL))(3) 后台任务 后台运行sleep 60 jobsjobs -lps -f(4)coproc 协程后台子 shell默认协程coproc sleep 10jobs -l自定义协程名称coproc My_Job { sleep 10; }jobs -l4. 内建命令、外部命令区分实操(1) 外部命令查询ps 为例which pstype -a psls -l /bin/psps -f(2) 纯内建命令查询cd、exittype -a cdtype -a exit(3) 双实现命令echo、pwdtype -a echotype -a pwd5. history 历史命令实操(1) 查看历史记录historyhistory | grep 27(2) 对比缓存与本地历史文件tail -5 ~/.bash_historyhistory | tail -5(3) 强制写入历史文件history -atail -5 ~/.bash_historyhistory | tail -5(4) 快速调用历史命令!!!276. alias 别名实操(1) 查看系统预设别名alias -p(2) 自定义命令别名alias lils -lili(3) 删除别名unalias li二、内建命令history专项练习题1.查看 history 与 cat .bash_history 输出有什么不同(1)核心结论:未执行同步命令时history 显示的命令记录更多二者输出末尾内容不一致。(2)理论分析history读取当前 Shell 会话内存缓存包含本次终端刚输入、还未保存的新命令输出带数字编号。cat .bash_history读取硬盘持久化历史文件默认仅在执行exit退出终端后内存记录才会写入该文件无法查看本次会话新命令输出无编号。(3)Xshell 实操验证:① 新建 Xshell 会话执行测试命令pwdlsecho test② 分别查看最新 5 条记录对比history | tail -5tail -5 ~/.bash_history2.执行 history -a后cat .bash_history输出有什么变化(1)核心结论:执行history -a强制同步后, .bash_history文件会追加本次会话全部新命令文件内容与history内存记录完全一致。(2)理论分析history -a作用无需退出终端强制把内存中本次会话新增的命令立即追加写入.bash_history文件。(3)Xshell 实操验证:① 承接上一题环境执行同步命令history -a② 再次对比查看记录history | tail -5tail -5 ~/.bash_history三、知识框架体系1. Shell 基础与 Shell 类型(1) Shell 概念Shell 是 C 语言编写程序作为用户与 Linux 内核交互桥梁兼具命令交互语言、脚本编程语言两种属性后缀 .sh 为 Shell 脚本首行 #!/bin/bash 指定脚本解释器。(2) Linux 主流 Shell 分类① /bin/shBourne Shell② /bin/bashBourne Again ShellLinux 系统默认 Shell③ cshC Shell④ kshK Shell⑤ dash轻量 Shell系统默认 Shell 存于 /etc/passwd 用户记录第 7 字段。(3) 配套命令、用途与参数① ls -LF /bin/*sh用途列出系统所有 Shell 程序查看软链接关系参数-L 展示文件权限所有者-F 标记可执行文件② cat /etc/passwd | grep 用户名用途查看用户默认登录 Shell参数grep 筛选指定用户行③ /bin/dash exit用途手动切换 dash 子 shellexit 退出当前 shell 返回上层2. Shell 父子进程关系(1) 核心概念父 ShellXshell 登录自动启动的顶层交互 bash子 Shell执行 bash 命令生成的新 shell 进程PID进程唯一编号PPID父进程编号。(2) 配套命令、用途与参数① bash用途创建新一层子 Shell重复执行可多层嵌套② ps -f用途格式化输出进程展示 UID、PID、PPID 区分父子进程参数-f 完整格式化展示进程信息③ ps --forest用途树形打印进程树直观展示嵌套子 Shell 层级参数--forest 开启树形可视化④ exit用途逐层销毁当前子 Shell每执行一次减少一层嵌套3. Shell 四种运行模式(1) 顺序命令模式语法cmd1;cmd2;cmd3用途单行依次执行多条命令不生成子 Shell(2) 子 Shell 分组模式 ()语法(cmd1;cmd2)、(cmd1;(cmd2))用途括号强制生成子 Shell嵌套括号实现多层子 Shell(3) 层级判断变量 $BASH_SUBSHELL用途输出数字判断子 Shell 层级0 父 Shell≥1 代表子 Shell 层数(4) 后台运行模式 语法sleep 60 用途命令放入后台执行释放终端前台配套命令jobs查看所有后台任务无参数仅展示任务编号状态jobs -l参数 - l展示后台任务 PID(5) coproc 协程① coproc sleep 10用途创建默认名称 COPROC 的后台协程子 shell② coproc My_Job { sleep 10; }用途自定义协程名称语法要求大括号前后、分号后必须加空格4. 内建命令 外部命令(1) 外部命令概念独立二进制程序存放 /bin、/usr/bin执行会 fork 子进程开销大、速度慢示例 ps。配套命令which 命令仅查找外部程序文件路径无法识别内建命令type -a 命令展示命令全部实现形式(2) 内建命令概念编译集成进 bash无独立文件无需创建子进程执行更快示例 cd、exit、history、alias。(3) 双实现命令概念echo、pwd 同时拥有内置版本与外部二进制程序type -a 可同时展示两种实现。5. 高频内建命令 history(1) 核心规则命令记录先存入内存缓存默认关闭 Shell 会话才写入隐藏文件/.bash_history。(2) 命令、用途与参数① history无参数输出全部历史命令并附带编号history -a强制将内存缓存写入.bash_history② tail -5 ~/.bash_history用途读取历史文件末尾 5 行参数 - 5 控制展示行数③ !!快速执行上一条历史命令④ ! 数字执行 history 对应编号的历史指令⑤ history | grep 关键词筛选带指定关键词的历史记录6. 高频内建命令 alias(1) 核心规则自定义命令别名仅当前 Shell 会话临时生效新开终端失效。(2) 命令、用途与参数① alias -p参数 - p打印系统全部预设别名② alias 别名 原始完整命令 用途自定义简短命令简写例 alias lils -li③ unalias 别名用途删除单条自定义别名
网站建设 高端定制 企业官网