一、核心知识点梳理
(一)文本编辑与处理命令
vim 编辑器
概念:Linux 下模态文本编辑器,分为命令模式、插入模式、底行模式三种工作模式。
核心操作:执行vim 文件名启动编辑器,按下 i 键进入插入模式,可自由输入、修改文本;按下 Esc 键退回命令模式,输入:wq保存文件并退出,:q!放弃修改强制退出;命令模式输入:/关键词可全文检索匹配内容;底行模式输入:%s/旧内容/新内容/g完成全文替换,数字s/旧内容/新内容/g仅对指定单行替换。
sort 排序命令
概念:按行对文本内容进行排序,默认采用字典排序规则。
核心参数:-n 按照数字实际大小排序,规避字典序数字错乱问题;-r 将排序结果倒序输出;-nr 组合参数实现数字倒序排序;-k 针对文本指定列进行排序。
grep 检索命令
概念:在目标文本中匹配指定字符串,输出符合检索条件的内容行。
核心参数:-o 仅打印匹配到的关键词本身,不输出整行;-n 输出匹配内容时附带对应行号;-c 统计文件内匹配关键词的总行数;-v 反向检索,输出不包含目标关键词的所有行。
history 历史命令
概念:用于查看、管理当前终端会话执行过的全部命令。
核心操作:直接输入 history 查看当前会话带编号的命令记录;cat .bash_history 读取磁盘持久化存储的历史命令文件;history -a 将当前会话新增的所有命令追加写入历史记录文件。
(二)Shell 变量与环境变量
局部变量
概念:仅在当前父 Shell 会话中生效的变量,无法被子 Shell 继承读取。
赋值规则:书写格式为变量名=值,等号左右不允许存在空格;若变量值包含空格、特殊符号,必须使用单引号或双引号包裹内容;使用echo $变量名查看变量存储内容。
特性:进入子 Shell 后无法读取父 Shell 定义的局部变量;子 Shell 内创建的局部变量,退出子 Shell 回到父 Shell 后直接失效。
环境变量(全局变量)
概念:通过 export 指令导出后的变量,能够被当前 Shell 创建的所有子 Shell 继承使用。
核心操作:两种定义导出方式,变量名=值 && export 变量名、export 变量名=值;子 Shell 可以直接读取父 Shell 导出的环境变量;子 Shell 内部对环境变量重新赋值并再次 export,修改仅作用于当前子 Shell 以及该子 Shell 衍生的下级 Shell,退出子 Shell 后,父 Shell 内变量原值不会发生改变。
二、知识框架体系
文本操作类工具
vim:核心用途为本地文本创建、编辑、修改;核心操作包含模式切换、文件保存退出、全文检索、文本替换,适配配置文件、脚本文件编辑场景。
sort:核心用途为文本内容行排序;核心参数包含数字排序、倒序排序组合参数,适用于日志、数字清单规整排序。
grep:核心用途为文本关键词过滤检索;核心参数包含显示行号、统计匹配行数、反向过滤、仅输出匹配字符,常用于日志筛选、文本内容查找。
history:核心用途为管理终端执行历史;核心操作包含查看会话历史、同步历史至本地文件,方便重复执行过往命令。
Shell 变量体系
局部变量:仅当前终端会话可用,父子 Shell 之间不互通,适用于临时单次数据存储,无导出指令。
环境变量:经 export 导出后可传递给子 Shell,子 Shell 修改不向上同步父 Shell 数据,适用于跨会话传递配置、路径等通用数据。
三、Xshell 实操流程与结果说明
- vim 编辑器实操
操作流程:输入 vim test.txt 创建文本,按下 i 进入插入模式录入带 old 字符的多行文本,Esc 切换命令模式,输入:wq 保存退出;重新打开文件执行:/old 检索文本内所有 old 字符,分别执行全局替换、单行替换指令。
实操结果:成功完成文本录入保存;检索指令可高亮匹配全部 old 字符;全局替换会修改文件内所有 old 字段,单行替换仅修改目标行内容,其余行内容保持不变。 - sort 排序实操
操作流程:新建 num.txt 写入多行无序数字,依次执行默认 sort 排序、sort -n 数字排序、sort -r 倒序、sort -nr 数字倒序。
实操结果:默认字典序排序会出现 10 排在 2 前方的错乱情况;添加 - n 参数后按照数字真实大小升序排列;搭配 - r 参数可实现升序、降序自由切换。 - grep 检索实操
操作流程:基于 test.txt 文件,依次执行基础检索、带行号检索、统计匹配行数、仅输出匹配字符、反向过滤检索指令。
实操结果:基础指令输出含关键词完整行;-n 参数附带行号便于定位;-c 直接输出匹配总行数;-o 仅打印 old 单词;-v 输出所有不包含 old 的文本行。 - history 命令实操
操作流程:分别执行 history、cat .bash_history 对比输出内容,执行 history -a 后再次读取历史文件。
实操结果:history 展示当前会话带编号的命令记录,cat 读取本地文件无编号;执行 history -a 后,本次会话所有新执行命令同步写入本地历史文件,两次读取文件内容出现增量变化。 - 局部变量实操
操作流程:父 Shell 定义局部变量 my_variable 并打印,输入 bash 进入子 Shell 再次打印该变量;子 Shell 新建局部变量,执行 exit 退回父 Shell 后打印子 Shell 变量。
实操结果:子 Shell 无法读取父 Shell 局部变量;子 Shell 创建的局部变量在退出后,父 Shell 无对应数据输出;变量赋值时等号两侧不能添加空格,带空格内容需引号包裹。 - 环境变量 export 实操
操作流程:父 Shell 定义变量并通过 export 导出,进入子 Shell 读取变量;子 Shell 重新赋值并再次 export 导出,执行 exit 退回父 Shell 读取变量。
实操结果:子 Shell 可正常读取父 Shell 导出的环境变量;子 Shell 内部修改变量值仅在自身会话生效,退出子 Shell 后父 Shell 内变量仍保留原始赋值。
四、整体总结
本次全部操作均在 Xshell 工具中完成,完整覆盖 vim、sort、grep、history 四类文本处理命令,以及局部变量、export 环境变量两大变量核心知识点。实操过程验证了各命令参数的功能差异、Shell 父子会话变量的作用域限制,搭建了清晰的 Linux 文本处理与变量管理知识体系,所有操作步骤均可截图留存作为实操佐证,为后续 Shell 脚本编写、服务器日志运维打下基础。