当前位置: 首页 > news >正文

Xshell六

一、Shell的类型
Shell是用户和Linux内核之间的沟通桥梁,按照启动方式和使用场景可以划分成四种类型,分别是交互式、非交互式、登录Shell、非登录Shell。
交互式Shell就是我们通过Xshell远程登录之后正常使用的终端环境,带有命令提示符,可以手动逐行输入指令,系统即时给出运行反馈,同时支持命令别名、历史命令回溯、Tab补全等交互功能。
非交互式Shell一般伴随Shell脚本运行而产生,在执行 .sh 脚本的时候自动开启,不需要人为手动输入指令,程序会依照脚本从上至下自动依次执行语句,不存在交互提示符。
登录Shell产生于账号登录环节,不管是SSH远程登录还是本机账号登录,初次进入系统的顶层Shell就是登录Shell,它会完整加载全局配置文件以及用户专属的环境配置文件。我们也可以输入 bash --login 手动创建一个登录Shell。而非登录Shell是已经登录系统之后额外创建出来的,比如新开终端窗口、直接输入bash指令唤起的新Shell进程,它只会加载局部配置文件,不会读取登录阶段的环境参数。
二、Shell进程以及父子关系
每一个Shell本质都是独立的进程,由此衍生出父Shell和子Shell的概念。我们登录之后最先拥有的终端进程就是父Shell,后续由它衍生开辟出来的新Shell进程,全部称为子Shell。子Shell会完整复制父Shell当下的环境变量数据,但是二者的内存空间相互隔离。如果在子Shell里面修改路径、自定义变量,操作结束退出之后,父Shell原本的数据不会发生任何改变。容易创建子Shell的操作有圆括号命令分组、管道符运算、后台任务运行、直接运行脚本文件。可以依靠系统变量 $BASH_SUBSHELL 判断层级,数值为0代表父Shell,数字大于零时则代表子Shell,数值大小对应嵌套层数。我们可以使用 ps --forest 命令,以树形结构直观查看所有进程之间的父子从属结构,清晰分辨PID之间的上下级关系。
三、Shell的父子关系补充特性
使用圆括号包裹指令执行一定会生成子进程,与之对比,大括号仅用作命令分组,并不会创建子Shell,内部的所有操作都会直接作用在父Shell环境里。
生命周期具备联动性,一旦手动关闭父Shell执行exit退出命令,所有依附它运行的子Shell进程也会随之一同结束运行。
四、Shell的运行模式
第一种为顺序执行模式,依靠分号分隔多条命令,能够在一行之内依次执行多个指令,全程都在父Shell之中串行运行,不会开辟新进程。格式示例: pwd ; ls ; whoami。
第二种为子Shell运行模式,将多条命令放置在圆括号内部执行,单独开辟子环境运行任务,在子Shell中切换工作目录,不会改动外层终端原本的路径位置。
第三种是后台运行模式,在整条命令的末尾添加符号 & ,任务就会转入后台静默运行。终端不需要长时间等待程序结束,可以立刻释放命令输入光标,继续执行别的操作。
配套管理指令:jobs可以查看当前全部后台任务,jobs -l可以额外展示任务对应的进程编号;fg能够把后台任务切换至前台运行,bg可以将暂停的任务重新在后台启动,kill命令可以根据任务编号或者PID结束进程。
五、内建命令与外部命令
内建命令直接内嵌在Shell程序本体当中,调用的时候不需要创建新进程,运行速度更快。常见的包含history、alias、cd、exit、echo等指令,可以输入 type + 命令名 来查验命令属性。
外部命令是存放在磁盘当中独立的可执行文件,每次调用都会新建一个子进程来完成运行,开销相对更大。ls、cat、mkdir、ps都属于外部命令,可以借助which命令查询它的文件存放路径。
二者最核心的差别就是进程创建机制,内建命令依托当前Shell直接运行,外部命令必须fork出新进程才可以正常执行。
六、内建命令history原理
history命令主要作用是记录终端会话里全部输入过的历史指令,命令记录会先临时存放在内存当中,系统默认只有在正常关闭终端会话时,才会自动把内存里的数据保存到隐藏文件 .bash_history 之中。
1. history 和 cat .bash_history 的输出差异
history调取的是内存里的数据,可以看到本次登录之后刚刚输入的所有命令,输出内容自带行编号,能够使用!加行号快速重复执行历史指令。
cat .bash_history读取磁盘上的文件,仅保存上一次会话结束之后留存的命令,无法查看本次还未退出终端的新指令,输出只有纯命令文本,没有行号标识。
2. 执行history -a之后产生的变化
参数 -a 代表追加写入,执行这条指令之后,会把当前内存中还没有落盘的命令,立刻追加保存到.bash_history文件里面,不用等到关闭终端。执行完毕再次cat查看文件,文件末尾会新增本次会话全部操作记录,磁盘文件内容和内存里的历史记录就会保持一致。
拓展常用参数:history 后面加上数字,可以只展示末尾指定条数的历史记录;history -w会直接用当前内存记录覆盖磁盘历史文件;history -r可以把磁盘里的历史文件重新读取加载进内存;history -c能够清空内存中全部的历史命令缓存。
同时还有快捷调用方式,!!可以直接重复执行上一条命令,!加上开头关键词,可以调取匹配前缀最近的一条历史命令运行。
七、内建命令 alias 别名用法
1.alias属于Shell内建命令,主要功能就是给冗长的命令设置自定义简写别名,减少重复输入的工作量。
2.直接输入alias不加参数,能够查看系统目前已经配置好的全部别名。临时别名的设置格式为 alias 别名='完整原命令',设置完成之后当下终端可以直接使用简写名称运行指令,缺点是会话关闭之后配置就会失效。

八、成果截图

http://www.jsqmd.com/news/1140708/

相关文章:

  • Nessus漏洞扫描实战:从策略设计到报告分析的全流程优化
  • 终极指南:3分钟搞定Windows与Office智能激活
  • 油气人员定位终端怎么选?千寻FindMobile vs 终端原生定位方案对比
  • milvus | 第 6 章:组件接口总览与角色分工
  • Stable Diffusion 3 与 Midjourney V6 对比评测:5个商业设计场景下的出图效率与成本分析
  • R3nzSkin国服特供版:英雄联盟免费换肤终极方案
  • Logstash安装与Docker部署实战:ELK日志处理核心枢纽配置指南
  • 115proxy-for-kodi:5步解锁无限云端影院的Kodi终极秘籍
  • 摄影师的终极批量水印解决方案:Semi-Utils智能批量处理工具
  • 如何用Translumo打破语言障碍:游戏屏幕实时翻译终极指南
  • 大模型进工厂:小白必看!工业AI大小模型协同实战指南(收藏版)
  • LRCGET:如何为你的本地音乐库自动添加专业级同步歌词
  • 智能歌词同步系统:LRCGET技术架构与离线音乐管理解决方案
  • 读懂NFT数字艺术藏品:数字世界的专属身份证
  • AI 推理基准测试自动化——用 CI 管道拦截每一次性能回退
  • Seedance 2.5本地部署:AI生图工具环境配置与实战优化指南
  • Excel 转 PDF 最简单的方法(免费在线,无需安装 Office,一键转换
  • 销售经销商全员视频营销,如何统一追踪?模拟3场景实测新榜矩阵通等4款工具
  • Linux-Docker容器内存优化
  • OpenEuler Custom Build Tool高级用法:自定义rpmbuild参数传递
  • GLM5.2 MoE大模型低显存部署实战:8GB显卡运行753B参数模型
  • 终极指南:三分钟完成Windows和Office智能激活
  • 乡镇级行政区划数据获取:水经注 vs 公开数据源,5项关键指标对比与自动化方案
  • ClickHouse 分布式表设计指南:分片键选错,查询会慢成什么样
  • 【无人机通信】基于 MILP 公式和鲁棒优化概念在不确定性下进行多目标无人机路由优化附Matlab代码
  • GitHub Copilot 2026升级:1M上下文+可配置推理+Agent API重构开发范式
  • Windows Defender误报Trojan:Win32/Vigorf.A?五步法精准鉴别病毒与误报
  • Go 微服务熔断:别等下游挂死才开始保护自己
  • STM32L4S5ZI与WSEN-ISDS传感器的姿态解算与轨迹重构
  • 预览 GPT-5.6 Sol:新一代模型