Linux Shell知识点体系总结
一、Shell的类型核心概念Shell是Linux系统中用户与内核之间的命令解释器负责接收用户输入的命令翻译并提交给内核执行是人机交互的核心媒介Linux系统支持多种不同版本的Shell。常见Shell类型及特点1. shBourne Shell最早期的经典Shell兼容性极强结构简单是所有Shell的基础功能较为精简。2. bashBourne-Again Shell绝大多数Linux系统默认的Shell兼容sh的所有功能拓展性强、功能全面是日常使用最广泛的Shell。3. csh/tcsh语法风格贴近C语言适合熟悉C语言的用户使用小众场景使用较多。4. zsh高性能拓展型Shell拥有丰富的插件和自定义功能交互体验极佳。5. dash轻量级精简Shell占用资源少是Ubuntu系统默认的脚本执行Shell。核心操作命令用途1. 查看当前正在使用的Shell可直观确认终端当前的命令解释器类型。2. 查看系统所有已安装的Shell罗列系统支持、可切换的全部Shell版本。3. 临时切换Shell可在不同Shell环境中切换退出即可恢复默认Shell环境。二、Shell进程及其关系、Shell父子关系核心概念1. Shell进程每打开一个Xshell终端窗口系统就会启动一个独立的Shell进程每个进程拥有唯一的进程PID是命令执行的载体。2. 父子Shell进程初始登录系统的终端进程为父Shell在父Shell中手动开启的新Shell进程即为子Shell。父子Shell核心特性1. 进程独立父Shell和子Shell拥有不同的PID是相互独立的进程。2. 环境继承父Shell中普通自定义变量无法被子Shell继承通过导出的环境变量可以被子Shell继承使用。3. 单向影响子Shell中对变量、配置的修改不会反向影响父Shell子Shell进程关闭后所有临时修改失效。4. 层级退出只能从子Shell退出回到父Shell无法从父Shell直接退出子Shell。核心操作命令用途1. 查看当前Shell进程PID区分父子Shell直观判断进程层级。2. 开启子Shell创建全新的子进程环境用于验证进程继承特性。3. 定义普通变量、导出环境变量对比验证父子Shell的变量继承规则。4. 退出Shell关闭子Shell进程回归上级父Shell环境。三、Shell的运行模式Linux Shell分为登录式Shell和非登录式Shell两种运行模式核心区别为触发场景不同、加载的系统配置文件不同。1. 登录式Shell触发场景通过账号密码远程登录Xshell、虚拟机本地控制台登录、使用带参数命令切换用户均会触发登录式Shell。核心特点会完整加载系统级和用户级的所有环境配置文件初始化完整的系统运行环境配置加载最全。2. 非登录式Shell触发场景登录系统后手动开启新Shell、直接打开新的终端窗口默认均为非登录式Shell。核心特点仅加载用户个人简易配置文件不会加载系统全局登录配置环境配置加载精简启动速度更快。核心操作命令用途1. 切换登录/非登录Shell手动模拟两种运行模式的环境。2. 判断Shell运行模式精准识别当前终端属于哪一种运行模式。四、内建命令和外部命令核心概念Linux所有执行命令分为内建命令、外部命令两类核心区别为存储位置、执行原理、运行效率不同。1. 内建命令内建命令是集成在Shell程序内部的命令无独立的磁盘可执行文件跟随Shell进程运行。核心特点执行时无需创建新进程直接在当前Shell进程内运行执行速度快仅对当前终端环境生效不会产生独立进程。常见内建命令切换目录、查看当前路径、历史命令、别名设置、退出终端、变量导出等。2. 外部命令外部命令是独立存储在系统磁盘目录中的可执行程序不属于Shell内置内容。核心特点执行命令时系统会创建新的子进程完成运行执行速度相对较慢所有用户、所有终端均可调用通用性强。常见外部命令查看文件、创建目录、复制移动文件、查看文件内容等系统工具命令。核心操作命令用途1. 判断命令类型精准区分某条命令是内建命令还是外部命令。2. 查找外部命令路径查看外部命令对应的磁盘存储位置。3. 调用绝对路径外部命令强制执行磁盘中的原始外部命令规避内置同名命令冲突。五、内建命令history用法命令核心用途history是Shell内置历史命令工具用于记录当前用户在终端执行过的所有命令方便用户快速查询、重复调用历史操作所有记录会自动保存至用户专属的历史命令文件中。主要参数及功能用法1. 无参数查看当前会话所有已执行的历史命令完整展示操作记录。2. 数字参数仅展示最近指定条数的历史命令精简查询结果。3. !序号快速执行历史列表中对应序号的历史命令无需重复输入完整命令。4. !!快捷重复执行上一条执行过的命令是高频快捷操作。5. !字符自动匹配并执行历史记录中最近一条以指定字符开头的命令。6. -c 参数清空当前终端内存中的所有历史命令记录仅清空临时内存不修改磁盘文件。7. -w 参数将当前内存中的历史命令强制写入磁盘历史文件永久保存本次操作记录。8. -r 参数读取磁盘中保存的历史命令文件加载到当前终端会话中。配套配置参数作用1. HISTSIZE设置当前终端内存中最多可保存的历史命令条数。2. HISTFILESIZE设置磁盘文件中永久保存的历史命令最大条数。3. HISTCONTROL设置历史命令记录规则可配置自动忽略重复命令精简记录内容。六、内建命令alias用法命令核心用途alias是Shell内置别名工具用于为冗长、复杂的命令设置自定义简短别名简化日常命令输入提升终端操作效率。主要参数及功能用法1. 无参数查看当前终端所有已配置的命令别名展示全部自定义快捷命令。2. 自定义别名格式临时创建命令别名仅对当前终端会话生效关闭终端后失效。3. unalias 别名单独删除某一个已设置的命令别名撤销自定义配置。4. unalias -a清空当前终端所有的临时别名配置恢复系统默认命令状态。别名永久生效原理临时别名仅单次会话有效若需要永久生效需将别名配置写入用户个人Shell配置文件。写入配置后通过重载配置命令无需重启系统即可立即生效后续所有终端会话均可永久使用自定义别名。七、整体知识框架小结1. Shell是Linux人机交互的命令解释器bash为系统默认Shell多种Shell可自由切换。2. Shell存在父子进程层级关系核心规则为环境变量可继承、子进程修改不影响父进程。3. Shell分为登录式、非登录式两种运行模式区别在于配置文件加载范围不同。4. 命令分为内置、外部两类内置命令速度快、无独立进程外部命令为独立程序、需新建进程执行。5. history用于管理历史命令支持查询、复用、清空、保存记录等操作。6. alias用于自定义命令别名分为临时生效和永久生效两种配置方式简化终端操作。