Linux基础阶段总结

张开发
2026/6/8 13:13:07 15 分钟阅读
Linux基础阶段总结
一.文件操作命令命令名功能常见格式常用选项加选项后的功能cat查看文件内容cat 文件名-n显示行号tail显示文件尾部内容tail 文件名(默认显示文件最后10行)-n显示文件最后n行-f实时追踪文件新增内容head显示文件头部内容head 文件名(默认显示文件前10行)-n显示文件前n行echo在终端输出文本或变量值echo[字符串/变量]、(重定向)覆盖写入文件echo”内容“文件名追加写入文件echo”内容“文件名grep在文件中搜索指定的字符串信息grep“字符串 文件名-i-i统一匹配大小写文本-R-R从当前目录所有的文件中查找符合的字符串|(管道)连接两个命令将前一个命令的输出作为后一个命令的输入命令1|命令2|命令3find查找文件或目录find 路径 -name ”文件名“-name-name指定名称-type-type指定类型f为文件d为目录sed流编辑器用于查找替换、删除行等sed [选项] ‘脚本’ 输入文件-i直接修改原文件不会有屏幕输出chmod修改文件权限chmod 文件的权限 文件名/目录名-R递归修改目录及其子目录/文件权限diff比较两个文件的差异diff 文件名1 文件名2md5sum计算和校验文件md5哈希值md5sum 文件名类别具体内容说明用户分类标识u普通用户/ 文件所有者区分不同类型的用户g组用户o其他用户a所有用户权限修改操作符添加权限用于调整用户权限-删除权限修改权限覆盖原有权限标识r可读用于表示文件或目录的不同访问权限w可写x可执行-无权限二.网络命令2.1基础命令命令名功能常见命令ifconfig查看及临时配置网络接口参数如IP 地址、子网掩码、MAC 地址ifconfigipconfig查看Windows 网络接口的配置信息如IP 地址、子网掩码、网关ipconfigping测试网络连通性通过发送ICMP 数据包检查目标主机是否可达ping 目标地址如:ping www.baidu.comipipip多功能网络管理工具如查看所有接口 IP 地址等等ip addr show2.2高级命令前三个为静态ip后三个为动态ip命令功能使用格式nmcli connection show列出当前系统中所有网络连接配置信息包括连接名称、UUID、连接类型、关联设备等nmcli connection showsudo nmcli connection modify以管理员权限修改指定网络连接的配置可设置IP 地址、网关、DNS 等参数sudo nmcli connectionmodify“连接名称”ipv4.addressesIP地址/子网掩码 ipv4.gateway网关地址 ipv4.dnsDNS服务器地址 ipv4.method manualsudo nmcli connection up以管理员权限重启指定的网络连接使修改后的网络配置生效sudo nmcli connection up“连接名称”nmcli connection show列出当前系统中所有网络连接配置信息包括连接名称、UUID、连接类型、关联设备等nmcli connection showsudo nmcli connection modify以管理员权限修改指定网络连接的配置将IPv4 配置方式设为自动获取(动态IP)sudo nmcli connection modify“连接名称”ipv4.method autosudo nmcli connection up以管理员权限重启指定的网络连接使修改后的网络配置生效sudo nmcli connection up“连接名称”三.压缩与解压缩命令压缩格式压缩命令格式命令解释.tartar -cvf [目标文件名].tar[源文件或目录]将[源文件或目录]打包成[目标文件名].tar-c创建新的归档文件-v显示详细的操作过程-f指定归档文件的名称.tar.gztar -zcvf [目标文件名].tar.gz[源文件或目录]将[源文件或目录]压缩成[目标文件名].tar.gz-z使用gzip 算法进行压缩.tar.bz2tar -jcvf [目标文件名].tar.bz2[源文件或目录]将[源文件或目录]压缩成[目标文件名].tar.bz2-j使用bzip2 算法进行压缩压缩格式解压缩命令格式命令解释.tarar -xvf [归档文件名].tar将[归档文件名].tar解压缩-x从归档文件中提取文件-v显示详细的操作过程-f 指定要操作的归档文件.tar.gztar -zxvf [归档文件名].tar.gz将[归档文件名]tar.gz解压缩-z使用gzip算法进行解压缩.tar.bz2tar -jxvf [归档文件名].tar.bz2将[归档文件名].tar.bz2解压缩-j使用 bzip2 算法进行解压缩四、Linux上硬链接和软链接的区别内存硬链接Hard Link定义硬链接是指向文件数据块的直接引用。硬链接和原文件共享相同的索引节点inode。特点同一文件系统硬链接只能在同一个文件系统中创建不能跨文件系统。相同权限硬链接与原文件具有相同的权限和属性删除任何一个不会影响其他链接。共享数据无论是硬链接文件还是原文件任何一个文件的修改都会反映在另一个文件上因为它们共享同一数据块。计数器删除一个硬链接inode的引用计数减1只有当引用计数为0时数据才会被删除。创建硬链接命令ln命令格式ln 被链接的文件 创建硬链接文件名称验证硬链接查看inode号ls -i软链接符号链接Symbolic Link定义软链接是一个指向文件路径的文件它包含指向另一个文件的路径信息。特点跨文件系统软链接可以跨文件系统。独立属性软链接与原文件的属性可以不同并且软链接本身也有独立的inode。不共享数据软链接只保存目标文件的路径删除目标文件后软链接仍然存在但指向的路径无效成为“断链”。符号标识在文件列表中软链接通常带有一个小箭头-​指向目标文件。创建符号链接命令格式ln -s 被链接的文件/目录(绝对路径) 创建软链接文件名称验证符号链接:查看符号链接指向ls -l查看inode号ls -i总结硬链接直接指向文件的数据块共享同一 inode。软链接指向文件路径有独立 inode可跨文件系统。五.GDB调试命令及流程命令分类具体命令命令说明使用示例程序运行控制run/r运行程序直至遇到断点或程序结束rcontinue/c继续运行程序直到下一个断点或程序结束c代码查看list/l列出源代码l默认列出当前行附近代码lmain列出main函数代码断点操作break/b在指定行号或函数处设置断点b 10在第10 行设置断点b main在main函数处设置断点info b查看已设置断点的信息info bdelete/d删除指定编号的断点d 2删除编号为2 的断点调试方式next/n逐过程调试不进入函数内部nstep/s单步调试进入函数内部s变量查看print/p查看变量的值p n查看变量n的值display每次程序停止时自动显示变量的值display n自动显示变量n的值流程编译程序添加调试信息 -g--启动GDB并加载程序--设置断点暂停程序执行方便检查状态 --运行程序,程序开始执行,执行到断点处 --程序运行到断点,暂停--进行调试操作(单步调试/查看变量值) --继续运行--是否到下一个断点(是则返回到运行程序,接着执行后续操作,否则进行下一步) --程序结束实例见文章GDB调试与环境变量管理攻略六.环境变量定义环境变量是由操作系统维护的一系列键值对(变量名值),用于存储系统/用户相关的配置信息影响进程的运行环境如程序执行路径、用户目录、默认编辑器等;作用全局设置多个程序可共享环境变量(如 PATH 定义可执行程序搜索路径);灵活性允许用户或程序根据需求动态调整行为(如 HOME 指明用户主目录);传递性当启动一个新的程序时该程序会自动继承启动它的程序中的环境变量分类按作用范围用户级仅对当前用户生效(如 ~/.bashrc 中定义的变量);系统级对所有用户生效(如 /etc/profile 中定义的变量);按生命周期临时变量仅当前终端会话有效关闭终端后失效(如用 export 临时定义的变量);永久变量通过修改配置文件实现重启或重新登录后仍有效(如写入配置文件并 source 生效的变量);临时配置环境变量export 命令export 命令可用于自定义新的变量或者对已有的变量进行修改;语法第一种语法格式export 变量名值第二种语法格式变量名值export 变量名说明这两种方式的效果是一样的都是将变量设置为环境变量并且让这个变量在当前终端以及在这个终端里启动的其他程序中都能被使用永久配置环境变量配置类型作用范围配置文件是否需要管理员权限生效方式特点用户级配置当前用户~/.bashrc等否source 文件名或重启终端个性化定制仅自己可用系统级配置所有用户/etc/profile等是source 文件名或新用户登录统一配置影响所有用户PATH环境变量定义PATH 是 Linux 系统中不可或缺的环境变量以冒号分隔的形式有序存储着一系列可执行文件所在的目录路径。这些路径涵盖了系统命令、用户自定义脚本、各类应用程序的存储位置像 /bin 存放基础系统命令/usr/bin 容纳用户级工具~/bin 可用于保存个人脚本关键作用PATH 为用户提供了便捷的命令执行方式在终端输入命令(如 python、git)时无需输入命令的完整路径系统会依据 PATH 自动定位对应可执行文件让用户摆脱繁琐路径输入高效完成操作若系统无法在 PATH 指定路径中找到文件就会反馈 command not found 错误提示格式与操作格式路径间以冒号分隔如 /usr/local/bin:/usr/bin:/bin 路径排列顺序决定检索优先级查看与修改通过 echo $PATH 查看当前配置使用 export PATH$PATH:/new_pathy可临时添加路径作用:简化命令执行:配置 PATH 后可直接输入文件名简化操作保障操作便捷:配置 PATH 可确保软件便捷使用满足个性化需求:将目录添加到PATH就能在任意目录下直接输入脚本名或程序名运行实现个性化工具的便捷调用解决版本冲突:配置 PATH 可指定优先使用的版本避免不同版本相互干扰保障软件运行符合预期七.shell脚本Shell 是计算机操作系统的命令行解释器它充当用户与操作系统内核Kernel之间的桥梁负责接收用户输入的命令并执行相应的操作。调用现有的程序实现用户的意图用户在没有图形界面的情况下shell是用户访问系统内核服务的唯一途径。好处与常见功能1.自动化重复任务代替手动输入命令例如批量重命名文件、定时备份、日志清理等。例每天凌晨自动压缩并备份指定目录。2.高效系统管理快速完成系统配置、服务监控、软件安装等操作。例一键部署开发环境安装依赖、配置网络等。3.跨平台兼容性基于 Unix/Linux 的系统如 macOS、Linux均支持 Shell 脚本部分功能可通过工具如 Cygwin/Git Bash在 Windows 运行。4.轻量级开发无需编译直接运行适合快速原型开发或小型工具。例用几行代码实现日志分析工具。5.强大的文本处理结合 grep、sed、awk 等工具高效处理文本和数据。例从日志文件中提取错误信息并统计频率。6.任务调度可与 cron 等工具结合定时执行任务。例每小时检查磁盘空间并发送报警邮件。7.灵活性支持条件判断if-else、循环for/while、函数等编程结构可编写复杂逻辑。8.资源占用低相比 Python/Perl 等脚本语言Shell 脚本更贴近系统层执行效率高。shell脚本的条件判断基本if结构if ((表达式)); thenshell语句fiif-else结构if ((表达式)); thenshell语句1elseshell语句2fiif-elif-else 结构if ((表达式1)); thenshell语句1elif ((表达式2)); thenshell语句2elif ((表达式3)); thenshell语句3...elseshell语句4fi在 shell 编程中[[ ... ]] 是 Bash 提供的高级条件测试语法比传统的 [ ... ] 更强大、更灵活基本语法if [[ 条件表达式1 ]]; thenshell语句1elif [[ 条件表达式2 ]]; thenshell语句2elseshell语句3ficase...in语句优势代码简洁清晰相比使用大量 if - elif 语句case...in 能让多路分支逻辑更加直观代码结构一目了然便于阅读和维护匹配灵活支持通配符匹配在处理文件名、设备名等具有一定模式特征的数据时非常方便select...in语句select...in 是 shell 脚本中用于创建交互式菜单的专用命令主要用于引导用户通过键盘输入选择预设选项。基本语法select 变量名 in 选项1 选项2 选项3...do命令序列[break] # 可选用于退出循环doneshell中的循环结构for循环适用于已知要遍历的元素集合如数组、列表或明确循环次数的场景通过依次迭代集合元素或按指定数字范围来执行循环体;基本语法遍历列表:for 变量 in 列表或数组元素; do命令1命令2...done数字范围循环:for ((初始值; 条件; 增量或减量)); do命令1命令2...donewhile循环根据条件判断结果决定是否执行循环体只要条件为真就持续循环直到条件为假时结束适用于条件动态变化或不确定循环次数的情况基本语法while 条件判断; do命令1命令2...doneuntil循环与while循环相反until循环基于条件判断结果决定是否执行循环体不过是条件为假时持续循环一旦条件变为真就结束循环适用于需要等待某个条件达成的场景基本语法until 条件判断; do命令1命令2...done执行逻辑条件判断可以是数值比较、字符串比较、文件状态检测等各种测试只要条件判断结果为假返回状态码非 0循环体就会一直执行当条件判断结果变为真返回状态码 0时循环终止八.makefileMakefile是自动化构建工具make的配置文件用于定义项目中的编译规则、依赖关系和任务流程。它通过描述文件之间的依赖关系可以智能地仅重新编译发生变动的部分大幅提升开发效率。格式目标 (target): 依赖 (prerequisites)命令 (commands规则示例app: main.o utils.ogcc -o app main.o utils.omake 工具通过比较目标与依赖文件的修改时间戳仅当依赖文件比目标 “更新”时才执行命令重新生成目标实现增量构建。例如如果 main.o 和 utils.o 的修改时间都比 app 旧那么 make工具不会执行链接命令若其中一个或两个依赖文件被修改app 将被重新链接生成常见符号的含义$表示规则中的目标文件集。在模式规则中如果有多个目标那么$就是匹配于目标中模式定义的集合。$%仅当目标是函数库文件中表示规则中的目标成员名。例如如果一个目标是foo.a (bar.o)那么就是foo.a。如果目标不是函数库文件Unix下是[.a]Windows下是 [.lib]那么其值为空。$依赖目标中的第一个目标名字。如果依赖目标是以模式即%定义的那么$将是符合模式的一系列的文件集。注意其是一个一个取出来的。$?所有比目标新的依赖目标的集合。以空格分隔。$^所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的那个这个变量会去除重复的依赖目标只保留一份。$这个变量很像$^也是所有依赖目标的集合。只是它不去除重复的依赖目标。$*这个变量表示目标模式中%及其之前的部分。如果目标是dir/a.foo.b并且目标的模式是a.%.b那么$*的值就是dir /a.foo。:​ 是立即展开的赋值符号。使用这个符号定义的变量会在定义时立即被展开。所有的变量在定义时就会被计算好。??​ 是条件赋值操作符。如果变量没有被定义过那么使用?​可以为其赋一个初值。如果该变量已经被定义那么该赋值操作将被忽略。​ 是追加赋值操作符。它用于将新的内容追加到已经定义的变量值之后。

更多文章