Linux Shell基础知识点总结与实操演示
一、文章概述
本次实操围绕Linux Shell基础完整知识点展开,包含Shell类型、Shell进程父子关系、Shell运行模式、内建命令与外部命令区分、history历史命令、alias自定义别名六大学习模块。所有命令均在Xshell连接Ubuntu虚拟机环境完成实操演示,梳理完整知识框架,记录每一步操作与运行结果,清晰展示各指令的功能、参数使用效果。
二、Shell相关基础概念
(一)Shell的类型
Shell是用户与Linux系统内核之间的交互媒介,主要作用是解析用户输入的命令,将指令传递给内核完成执行操作。主流Shell分为以下几类:
第一,sh,最早的标准Shell,兼容性广泛,但功能较为简单;
第二,bash,Linux系统默认使用的Shell,完全兼容sh所有语法,额外拓展历史命令、自定义别名等实用功能,本次实操全程使用bash;
第三,zsh、csh,属于拓展类Shell,多用于开发、运维专业场景。
(二)Shell进程及其父子关系
每打开一个全新的终端窗口,操作系统会创建独立的bash父进程。当我们在终端执行程序、括号包裹命令、运行脚本文件时,系统会生成对应的子Shell进程。
进程存在固定层级规则:父进程关闭结束时,其创建的全部子进程会同步销毁;子进程无法修改父进程的环境变量、自定义别名、内存内的历史命令记录。
我们可以使用ps --forest命令以树形结构打印系统进程,能够直观观察bash父进程与ps子进程的层级关系。配套快捷指令!!,可以直接重复执行上一条输入的命令。
(三)Shell的运行模式
Shell分为交互式Shell与非交互式Shell两种运行模式。
交互式Shell就是我们日常手动打开终端窗口,逐行手动输入命令,系统实时输出执行结果,界面带有$命令提示符;
非交互式Shell不会弹出交互窗口,在运行.sh脚本文件时自动启动,仅批量执行脚本内部预先写好的代码。
(四)内建命令和外部命令
内建命令直接集成在bash程序内部,执行时不会创建子进程,运行速度更快,常见指令包含history、alias、cd、pwd等。
外部命令是独立的可执行文件,存放于系统/usr/bin目录下,运行外部命令时系统会自动生成子进程,ls、cat都属于外部命令。
我们可以通过type指令区分命令类型,输入type pwd、type ls即可对比两者差异。
三、内建命令history 详解实操
核心概念
history命令专门用于记录终端窗口所有执行过的指令,历史命令会持久保存在家目录下的隐藏文件.bash_history中。实操1:对比history 与 cat .bash_history
history指令读取当前终端内存内全部历史命令,自带数字行号,包含本次登录后新输入的所有指令;
cat .bash_history仅读取硬盘存储的历史文件,无法读取当前终端刚输入、还未保存缓存的新命令。
执行指令为history、cat .bash_history。
- 实操2:history -a 参数作用
history -a参数功能:将当前终端内存中新执行的全部命令,立刻追加写入.bash_history历史文件。执行完成后再次读取文件,之前缺失的本次操作指令会全部保存到文件中。
配套执行指令为history -a、cat .bash_history。
- 历史命令快捷调用方法
第一种!!,一键重复执行上一条输入的命令;
第二种!数字,调取历史记录对应行号的命令直接运行。
完整实操流程:输入pwd打印当前目录,使用history | grep pwd筛选所有pwd相关历史记录,输入!加查询到的行号复用历史命令。
- 补充history常用参数
history -c:清空当前终端内存中存储的历史记录;
history -w:手动将内存内所有历史命令写入历史文件;
history n:仅展示最后n条历史指令。
四、内建命令alias自定义别名实操
概念
alias是Shell内建命令,作用是给冗长复杂的命令设置简短自定义别名,简化重复输入操作。通过alias创建的别名仅在当前终端窗口生效,关闭终端后自动失效;别名仅作用于当前Shell进程,不会影响其他终端窗口。查看系统全部别名
执行指令alias -p,运行后打印系统预设的全部别名,包含ll、la、ls等系统自带简写命令。
创建自定义别名
alias标准语法格式:alias 别名=‘完整原始命令’,等号两侧不能添加空格,引号必须使用英文单引号。
本次实操创建ls -li的简写别名li,完整创建指令:alias li=‘ls -li’。
创建完成后再次执行alias -p,列表内会新增li别名;直接输入li即可执行ls -li,查看文件完整属性信息。
整套实操指令:alias li=‘ls -li’、alias -p、li。别名删除指令
unalias li:单独删除自定义创建的li别名;
unalias -a:一次性清空当前终端全部自定义别名。
五、整体知识框架总结
- Shell基础内容:Shell定义、常见分类、交互式与非交互式两种运行模式;
- Shell进程相关:父子进程生成规则,使用ps --forest查看进程树结构;
- 命令分类:内建命令(history、alias、cd等)、外部命令(ls、cat等);
- history命令使用:查看历史记录、-a参数缓存写入、!!与!数字快速调用历史指令;
- alias别名工具:自定义别名创建、查看系统别名、删除自定义别名。
六、实操总结
本次文章内所有操作均通过Xshell远程连接Ubuntu虚拟机完成,全部命令手动输入并验证运行效果。history命令能够快速调取过往执行指令,大幅提升操作效率;alias别名可以简化复杂长命令的输入流程。Shell父子进程、内外命令区分是Linux命令运行底层核心知识,在日常操作、Shell脚本编写、服务器运维场景中都会高频使用。文中所有操作截图严格按照标注位置依次插入,完整记录每一条命令的输入过程与对应运行输出结果。