一、网络相关命令
| 命令 | 特点 | 适用场景 |
|---|---|---|
ifconfig |
老牌、简单直接,部分新系统默认未安装 | 兼容旧系统,快速查看基础信息 |
ip addr |
现代、功能强,支持更多配置与状态 | 所有主流 Linux 发行版,推荐使用 |
netstat -i |
侧重接口统计与流量状态 | 排查网络丢包、错误时的辅助工具 |
nmcli |
与 NetworkManager 集成,适合图形 / 桌面环境 | 管理 NetworkManager 控制的网络设备 |
GCC具体编译流程
gcc 编译分为四步,每步作用及输出如下:
预处理(Preprocessing)
作用:处理#include、#define等预处理指令,插入头文件内容,替换宏定义。
输出:.i文件(预处理后的源代码)。
编译(Compilation)
作用:将预处理后的代码转为汇编语言,进行语法、语义分析及优化。
输出:.s文件(汇编代码)。
汇编(Assembly)
作用:将汇编代码转换为目标机器码,生成中间文件。
输出:.o文件(目标文件)。
链接(Linking)
作用:合并目标文件与库文件,解决函数和变量引用,生成可执行程序。
输出:可执行文件(默认a.out,或自定义名称)。
GDB如何调试
示例:



查看环境变量的方法

环境变量的概念
、\[ ]、(( )) 三者对比表
| 特性 | [ ](test 命令) |
[[ ]](Bash 关键字) |
(( ))(算术运算) |
||||
|---|---|---|---|---|---|---|---|
| 本质 | 外部可执行程序 /usr/bin/[ |
Bash/Zsh 内置关键字 | Shell 内置算术扩展 | ||||
| POSIX 兼容性 | ✅ 兼容所有 Shell(POSIX 标准) | ❌ 仅 Bash/Zsh 支持 | ❌ 仅 Bash/Zsh 支持 | ||||
| 适用场景 | 通用文件 / 字符串 / 数字条件判断 | 增强的字符串 / 文件 / 逻辑判断 | 纯整数算术运算与比较 | ||||
| 空格要求 | 极其严格,括号前后、运算符前后都必须有空格 | 宽松,括号前后建议加空格,运算符可省略 | 宽松,完全可以不写空格(如 ((a>10))) |
||||
| 逻辑运算符 | -a(与)/ -o(或) |
&&(与)/ ` |
`(或) | &&(与)/ ` |
`(或) | ||
| 字符串比较 | =/!=,不支持模式匹配 |
=/== 支持通配符 / 正则匹配 |
不支持字符串比较 | ||||
| 数字比较 | -eq/-ne/-gt/-lt 等 |
不支持数字比较 | 直接用 >/</==/+/-/*// 等 |
||||
| 文件测试 | -f/-d/-e 等全部支持 |
全部支持 | 不支持文件测试 | ||||
| 空值处理 | 变量为空时容易报错,需加双引号 | 变量为空时更安全,无需额外引号 | 不处理字符串变量 |
赋值方式对比:
| 赋值方式 | 展开时机 | 核心特性 | 典型用途 |
|---|---|---|---|
= |
使用时(延迟展开) | 递归引用,易产生死循环 | 引用后续定义的变量 |
:= |
定义时(立即展开) | 静态值,不受后续修改影响 | 固定不变的常量 |
+= |
保持原变量的展开方式 | 在原值末尾追加内容 | 拼接编译选项、源文件列表 |
?= |
定义时(仅未定义时生效) | 提供默认值,支持外部覆盖 | 定义可被重写的配置项 |
