Linux 常用命令分类整理  

分类命令核心功能常用参数/速记要点
目录导航pwd打印当前工作目录完整路径无核心参数,用于确认当前位置
目录导航ls列出目录下的文件与子目录-l 显示详细信息;-a 显示隐藏文件;-h 人性化大小单位
目录导航cd切换工作目录cd ~ 回个人主目录;cd .. 返回上一级;cd - 回到上一次目录
目录导航mkdir创建新目录-p 递归创建多级目录
目录导航rmdir删除空目录仅能删除空文件夹,非空目录用 rm -r
文件操作touch创建空文件 / 更新文件时间戳后跟文件名即可,无核心参数
文件操作rm删除文件或目录(高危命令)-r 递归删除目录;-f 强制删除不提示
文件操作cp复制文件或目录-r 递归复制目录;-p 保留文件原属性
文件操作mv移动文件 / 重命名文件同目录下执行即为重命名
内容查看cat输出文件全部内容适合小文件,大文件会刷屏
内容查看more分页查看文件(仅向下翻)空格翻页,回车翻行,q 退出
内容查看less分页查看文件(上下均可翻)支持上下翻页、/关键词搜索,比 more 更常用
内容查看head查看文件开头内容默认显示10行;-n 20 指定显示20行
内容查看tail查看文件结尾内容默认显示10行;-f 实时追踪文件新增内容
搜索查找find按条件搜索文件-name 按文件名;-type 按文件类型;-size 按大小
搜索查找grep在文件内容中匹配字符串-n 显示行号;-i 忽略大小写;支持正则表达式
搜索查找which查找命令的可执行文件路径只检索环境变量 PATH 内的命令
搜索查找whereis查找命令的程序、源码、手册路径查找范围比 which 更广
压缩传输zip / unzipzip 格式压缩与解压zip 包名 文件 压缩;unzip 包名 解压
压缩传输rz / sz本地与服务器文件互传rz 本地上传到服务器;sz 文件名 服务器下载到本地
压缩传输tar打包/解包(重点)czvf 打包并压缩;xzvf 解压并解包
系统信息date查看/设置系统日期时间无参数时显示当前系统时间
系统信息cal显示日历默认显示当月;cal 年份 显示全年日历
系统信息bc命令行计算器支持整数、浮点运算,输入表达式直接出结果
系统信息uname -r查看 Linux 内核版本-r 仅输出内核版本号
进程性能top实时查看系统进程与资源占用动态显示 CPU、内存、进程状态,q 退出
帮助与别名man查看命令官方帮助手册man 命令名,最权威的用法说明
帮助与别名alias给命令设置自定义别名alias 别名='原命令',简化长命令输入
必备热键Tab自动补全命令/文件名/路径按1次补全,按2次列出所有候选
必备热键Ctrl + c强制终止当前运行的程序中断前台进程,通用停止键
必备热键Ctrl + d退出当前终端 / 结束输入等价于输入 exit
关机操作关机命令安全关闭/重启系统shutdown now 立即关机;reboot 重启;poweroff 关机

  Vim 核心操作速查表  

一、模式切换(基础必背)
操作功能说明使用场景
i光标当前位置前进入插入模式最常用的进入编辑方式
a光标当前位置后进入插入模式光标后追加内容
o光标下方新建一行并进入插入模式换行快速续写
I跳到行首并进入插入模式快速在行首插入
A跳到行尾并进入插入模式快速在行尾追加
O光标上方新建一行并进入插入模式向上插行编辑
Esc退出插入/可视化模式,回到普通模式按错、操作完必按
:进入末行模式执行保存、退出、替换等命令
二、普通模式 - 光标移动(纯键盘高效操作)
操作功能说明速记
h / j / k / l左 / 下 / 上 / 右 移动光标替代方向键,手不用离开主键盘区
0跳到当前行的行首
$跳到当前行的行尾
gg跳到文件第一行开头
G跳到文件最后一行
nG / :n跳到第 n 行例:10G 直接跳到第10行
w跳到下一个单词的开头word,按单词跳转
b跳到上一个单词的开头back
Ctrl + f向下翻一整页forward
Ctrl + b向上翻一整页backward

三、普通模式 - 编辑操作(删/复制/粘贴/撤销)
操作功能说明备注
x删除光标所在的单个字符
dd删除(剪切)光标所在整行删行最高频命令
ndd删除(剪切)光标开始的 n 行例:3dd 连续删除3行
dw删除光标到当前单词结尾删单个单词
D / d$删除光标到行尾的所有内容
d0删除光标到行首的所有内容
yy复制光标所在整行yank
nyy复制光标开始的 n 行例:5yy 复制5行
p在光标下方粘贴复制/剪切的内容
P在光标上方粘贴复制/剪切的内容
u撤销上一步操作等价于通用的 Ctrl+Z
Ctrl + r重做(撤销之前的撤销)等价于通用的 Ctrl+Y
r替换光标处的单个字符按r再按新字符,不用进插入模式
R进入逐字符替换模式类似「改写」模式,按Esc退出

四、搜索与替换
操作功能说明备注
/关键词从光标处向下搜索关键词回车后按 n 跳下一个,N 跳上一个
?关键词从光标处向上搜索关键词
:%s/旧内容/新内容/g全文批量替换所有匹配内容最常用全局替换,%=全文,g=全局匹配
:%s/旧内容/新内容/gc全文替换,每次替换前手动确认c=confirm,适合谨慎修改
:n1,n2s/旧内容/新内容/g指定行号范围替换例::10,20s/abc/def/g

五、末行模式常用命令
命令功能说明备注
:w保存文件,不退出write
:q退出Vim文件未修改时可用,修改未保存会报错
:wq保存并退出最常用退出方式
:q!强制退出,不保存修改改坏了直接放弃所有改动
:wq!强制保存并退出针对只读文件,需对应权限
ZZ普通模式下直接保存退出快捷键,不用进末行模式
:set nu显示行号写代码、定位行非常实用
:set nonu取消显示行号
:noh取消搜索结果的高亮搜完清掉高亮标记
:sp 文件名水平分屏打开另一个文件上下分屏
:vs 文件名垂直分屏打开另一个文件左右分屏

六、可视化模式(批量选中文本)
操作功能说明备注
v进入字符可视化模式按光标移动自由选字符
V进入行可视化模式整行选中,批量删/复制行
Ctrl + v进入块可视化模式矩形选块,批量注释、批量插入神器
选中后 d删除选中的内容
选中后 y复制选中的内容
选中后 >选中内容整体向右缩进
选中后 <选中内容整体向左缩进

  GCC 编译操作速查  

一、基础语法与最简用法

语法格式:

gcc [编译选项] 源文件1 源文件2 ... [-o 输出文件名]

最基础用法:

gcc test.c -o test
# 将 test.c 编译链接生成名为 test 的可执行文件
# 运行程序:./test

若省略 -o,默认生成名为 a.out 的可执行文件。

二、核心编译选项速查表

按功能分类,方便记忆:

分类选项功能说明常用场景
输出控制-o <文件名>指定输出文件的名称所有编译场景必用,避免默认生成 a.out
-E仅执行预处理,不进行后续编译查看宏展开、头文件包含结果
-S编译生成汇编代码(.s 文件),不汇编查看 C 语言对应的汇编指令
-c编译生成二进制目标文件(.o 文件),不链接多文件分开编译,最后统一链接
警告提示-Wall开启大部分常用警告提示日常编码必加,提前发现语法隐患
-Werror将所有警告视为错误,强制终止编译严格代码规范,禁止带警告通过
-w关闭所有警告提示不推荐日常使用
代码优化-O0关闭所有优化(默认级别)调试代码时使用,保证代码原貌
-O1 / -O2 / -O3一级/二级/三级代码优化发布程序用,-O2 是最常用的平衡选项
-Os针对程序体积优化嵌入式、存储空间受限场景
调试信息-g生成可被 gdb 调试的调试信息需要调试程序时必加
-ggdb生成 gdb 专用的更丰富调试信息深度调试场景
链接相关-l<库名>链接指定的第三方库例:-lm 链接数学库,-lpthread 链接线程库
-L<库路径>指定库文件的搜索目录链接自定义路径下的库文件
-static强制静态链接,生成静态可执行文件不依赖系统库,文件体积更大
-shared生成动态链接库(.so 文件)制作共享库
标准指定-std=c89 / -std=c99 / -std=c11指定 C 语言标准版本兼容不同语法标准
-std=c++98 / -std=c++11指定 C++ 语言标准(g++)C++ 编译时使用
其他常用-D<宏名>编译时定义宏条件编译、传参控制代码逻辑
-I<头文件路径>指定头文件的搜索目录引用自定义路径的头文件
三、编译四阶段(分步执行,理解原理)

GCC 完整编译分为 4 步,可通过选项单独执行每一步,便于排查问题:

  1. 预处理阶段(处理宏、头文件、注释)
gcc -E test.c -o test.i
# 生成 .i 预处理后的文本文件
  1. 编译阶段(C 代码转换为汇编代码)
gcc -S test.i -o test.s
# 生成 .s 汇编语言文件
  1. 汇编阶段(汇编代码转换为二进制目标文件)
gcc -c test.s -o test.o
# 生成 .o 二进制目标文件
  1. 链接阶段(目标文件+系统库拼接成可执行文件)
gcc test.o -o test
# 生成最终可执行程序 test
四、高频使用场景示例
  1. 单文件带警告+调试信息编译
gcc -Wall -g test.c -o test
  1. 多文件联合编译
# 方式1:一步编译
gcc main.c func.c -o app

# 方式2:分开编译再链接(修改单个文件无需全量重编译)
gcc -c main.c -o main.o
gcc -c func.c -o func.o
gcc main.o func.o -o app
  1. 编译并链接数学库
gcc calc.c -o calc -lm
# 代码中使用 sin/sqrt 等数学函数时,需链接 libm 数学库
  1. O2 优化发布编译
gcc -Wall -O2 main.c -o release_app

  Makefile 基础入门  

一、基础语法规则

Makefile 的核心是「目标-依赖-命令」的规则:

目标文件: 依赖文件1 依赖文件2 ...
    执行的编译命令

⚠️ 硬性规则:命令行前面必须是一个 Tab 键,不能是空格,否则会直接报错。

执行逻辑:执行 make 目标名 时,会检查依赖文件是否比目标文件更新,若有更新才重新执行命令,实现增量编译。

二、核心概念速记
1. 自定义变量

用变量替代重复内容,修改时只改一处,格式:

# 定义变量
变量名 = 变量值
# 引用变量
$(变量名)

行业约定的常用变量:

  • CC:指定编译器,如 CC = gcc
  • CFLAGS:编译选项,如 CFLAGS = -Wall -g -O2
  • LDFLAGS:链接选项,如 LDFLAGS = -lm
  • OBJS:所有目标文件列表,如 OBJS = main.o func.o
  • TARGET:最终可执行文件名,如 TARGET = app
2. 自动变量(高频必背)

无需手动定义,在规则中自动代表对应文件:

自动变量含义
$@代表当前规则的目标文件
$<代表第一个依赖文件
$^代表所有依赖文件
3. 伪目标 .PHONY

        如果目标不是真实生成的文件(比如清理命令 clean),需要声明为伪目标,避免和同名文件冲突,导致命令不执行。

.PHONY: clean all
三、从简到繁示例

假设项目文件:main.c、func.c、func.h,最终生成可执行文件 app。

版本1:最简原始版
app: main.o func.o
    gcc main.o func.o -o app

main.o: main.c func.h
    gcc -c main.c -o main.o

func.o: func.c func.h
    gcc -c func.c -o func.o

clean:
    rm -f *.o app

执行方式:

  • make 或 make app:编译生成可执行文件
  • make clean:清除所有 .o 文件和可执行文件
版本2:变量优化版

用变量统一管理编译器、编译选项,修改维护更方便:

CC = gcc
CFLAGS = -Wall -g
LDFLAGS = 
TARGET = app
OBJS = main.o func.o

$(TARGET): $(OBJS)
    $(CC) $(OBJS) -o $(TARGET) $(LDFLAGS)

main.o: main.c func.h
    $(CC) $(CFLAGS) -c main.c -o main.o

func.o: func.c func.h
    $(CC) $(CFLAGS) -c func.c -o func.o

.PHONY: clean
clean:
    rm -f $(OBJS) $(TARGET)
版本3:自动变量通用版(最常用写法)

用自动变量和模式规则简化重复命令,新增 .c 文件只需在 OBJS 里加对应 .o 即可:

CC = gcc
CFLAGS = -Wall -g -O2
LDFLAGS = -lm
TARGET = app
OBJS = main.o func.o

$(TARGET): $(OBJS)
    $(CC) $^ -o $@ $(LDFLAGS)

%.o: %.c func.h
    $(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean
clean:
    rm -f $(OBJS) $(TARGET)

说明:%.o: %.c 是模式规则,表示所有 .o 文件都由对应的同名 .c 文件编译生成。

四、完整通用模板(可直接套用)

适用于单目录下所有 .c 文件的项目,新增源文件无需修改 Makefile:

# 编译器与编译选项
CC = gcc
CFLAGS = -Wall -g -std=c99
LDFLAGS = -lm -lpthread

# 最终生成的可执行文件名
TARGET = myapp

# 自动获取当前目录所有 .c 文件,替换为 .o 列表
SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)

# 最终链接生成可执行文件
$(TARGET): $(OBJS)
    $(CC) $^ -o $@ $(LDFLAGS)

# 模式规则:所有 .c 编译为对应 .o
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

# 伪目标声明
.PHONY: clean rebuild

# 清理所有编译产物
clean:
    rm -f $(OBJS) $(TARGET)

# 完全重新编译
rebuild: clean $(TARGET)
五、常用命令与注意事项
  1. 直接执行 make:默认执行第一个目标(通常是最终可执行文件)
  2. make clean:执行清理目标
  3. make -j4:开启4线程并行编译,加快大项目编译速度
  4. 新手易错点:
    • 命令前必须是 Tab,空格会报 missing separator 错误
    • 头文件修改后,所有包含它的源文件都需要重编译,要把头文件写进依赖里

   GDB 调试操作速查表   

一、启动与退出
完整命令简写功能说明
gdb 可执行文件-启动 GDB 并加载目标程序
gdb 可执行文件 core文件-调试 core 转储文件,定位程序崩溃位置
quitq退出 GDB
二、断点管理(核心操作)
完整命令简写功能说明
break 行号b 行号在当前文件的指定行设置断点
break 函数名b 函数名在指定函数的入口处设置断点
break 文件名:行号b 文件名:行号多文件项目中,指定文件的指定行打断点
info breakpointsi b查看所有断点的编号、位置、状态
delete 断点编号d 编号删除指定编号的断点
deleted删除所有断点
disable 断点编号-临时禁用指定断点(不删除)
enable 断点编号-重新启用被禁用的断点
condition 断点编号 条件-设置条件断点,满足条件时才停下
示例:condition 1 i == 10
三、程序运行控制
完整命令简写功能说明
runr启动程序运行,直到遇到断点或程序结束
run 参数1 参数2r 参数运行程序并传入命令行参数
continuec从断点处继续运行,直到下一个断点
nextn单步执行,不进入函数内部(逐过程)
steps单步执行,会进入函数内部(逐语句)
finishfin运行到当前函数返回,直接跳出函数
until 行号u 行号直接运行到指定行后停下
Ctrl + c-中断正在运行的程序,回到 GDB 命令行
四、信息查看(排查核心)
完整命令简写功能说明
print 变量名/表达式p 变量名打印变量或表达式的当前值
ptype 变量名-查看变量的数据类型定义
listl查看当前位置附近的源代码
list 行号l 行号查看指定行号附近的代码
list 函数名l 函数名查看指定函数的完整代码
info localsi locals打印当前函数所有局部变量的值
backtracebt查看函数调用栈,崩溃时定位调用路径
frame 栈帧编号f 编号切换到指定栈帧,查看对应函数的变量
display 变量名-设置自动监控变量,每次停下都自动打印
info display-查看所有自动监控的变量
undisplay 编号-取消指定变量的自动监控
五、高级调试技巧
完整命令简写功能说明
set var 变量名 = 值-手动修改变量的值,改变程序运行逻辑
call 函数名(参数)-手动调用并执行函数
watch 变量名-设置观察点,变量值被修改时自动停下
info watchpoints-查看所有观察点
set args 参数列表-设置程序的命令行参数

新手标准调试流程

  1. 编译生成调试版本:gcc -g -Wall test.c -o test
  2. 启动 GDB:gdb ./test
  3. 主函数入口打断点:b main
  4. 运行程序:r
  5. 单步调试:n(不进函数)/ s(进函数)
  6. 查看变量:p 变量名
  7. 继续运行:c
  8. 调试结束退出:q
推荐博主

更多推荐