
一、Linux 常用基础命令大全1. 文件目录操作bash# 查看当前所在路径 pwd # 切换目录 cd /etc # 进入/etc绝对路径 cd ~ # 回到家目录 cd .. # 上一级目录 cd - # 回到上次目录 # 列出文件 ls # 普通列表 ls -l # 详细权限、大小、时间 ls -a # 显示隐藏文件(以.开头) ls -lh # 人性化显示文件大小(K/M/G) # 创建/删除目录 mkdir test mkdir -p a/b/c # 递归创建多层目录 rmdir test # 删除空目录 # 文件复制、移动、删除 cp test.c ./tmp/ cp -r dir1 dir2 # 复制文件夹 mv test.c new.c # 重命名 mv test.c /tmp # 移动文件 rm test.c rm -rf dir # 强制递归删除目录(慎用) # 创建空文件 touch main.c # 查看文件内容 cat main.c more main.c # 分页查看(空格翻页) less main.c # 更强分页支持上下滚动 head -n 10 main.c # 前10行 tail -n 20 main.c # 后20行 tail -f log.txt # 实时追踪日志输出 # 查找文件 find /home -name *.c # 在/home下找所有.c文件 grep printf main.c # 在文件中搜索字符串 grep -r main ./ # 递归搜索目录内所有文件2. 权限与用户bash# 修改文件权限 chmod 755 run.sh chmod x run.sh # 添加可执行权限 # 修改所有者 chown user:group test.c # 用户操作 whoami # 当前用户 sudo command # 管理员权限执行 su root # 切换root3. 进程、系统、网络bashps aux # 查看所有进程 top # 实时进程资源监控 kill -9 PID # 强制杀死进程 # 网络 ip addr # 查看网卡IP ping baidu.com netstat -tulnp # 查看监听端口 curl www.baidu.com wget https://xxx/file.zip # 压缩解压 tar -zcvf test.tar.gz ./test # 压缩 tar -zxvf test.tar.gz # 解压 zip -r out.zip ./dir unzip out.zip4. 文本处理bash# 管道 | 将前一个输出作为后一个输入 ls -l | grep .c # 输出重定向 echo hello a.txt # 覆盖写入 echo world a.txt # 追加写入 # 统计行数/单词 wc -l main.c # 排序、去重 sort a.txt | uniq二、Vim 编辑器使用C 开发必备Vim 三种核心模式普通模式、插入模式、底行模式1. 模式切换打开文件vim main.c默认进入普通模式普通 → 插入i光标前插入a光标后插入o下新开一行插入O上新开一行插入插入 → 普通按Esc普通 → 底行输入:2. 普通模式常用快捷键移动、复制、删除光标移动plaintexth 左 j 下 k 上 l 右 0 行首 $ 行尾 gg 文件开头 G 文件末尾 10G 跳转到第10行 w 下一个单词 b 上一个单词删除plaintextx 删除光标单个字符 dd 删除一整行 5dd 删除5行 dw 删除一个单词 d$ 删除光标到行尾复制粘贴plaintextyy 复制一行 3yy 复制3行 p 粘贴到光标下一行 P 粘贴到上一行 u 撤销 Ctrlr 恢复撤销查找替换plaintext/printf 向下搜索printf ?main 向上搜索main n 下一个匹配 N 上一个匹配3. 底行模式命令: 开头plaintext:w 保存 :w new.c 另存为 :q 退出无修改才能退出 :wq / :x 保存并退出 :q! 强制不保存退出 :set nu 显示行号 :set nonu 关闭行号 # 全局替换%s/旧字符串/新字符串/g :%s/abc/123/g # 只替换第10-20行 :10,20s/int/char/g # 跳转到指定行 :15三、gcc 编译 C/C 程序1. 四阶段编译流程预处理-E展开头文件、宏编译-S生成汇编代码汇编-c生成机器目标文件.o链接生成可执行文件分步编译示例bash# 1.预处理 main.c → main.i gcc -E main.c -o main.i # 2.编译成汇编 main.s gcc -S main.i -o main.s # 3.汇编成目标文件 main.o gcc -c main.s -o main.o # 4.链接生成可执行文件 a.out gcc main.o -o app # 运行程序 ./app2. 一键编译日常使用bash# 单个文件直接编译 gcc main.c -o main # 多个源文件一起编译 gcc main.c func.c -o app # 常用参数 -g # 添加调试信息gdb必须加 -O0/-O1/-O2/-O3 # 优化等级O0无优化(调试用) -Wall # 开启所有警告 -stdc99 # 指定C99标准 -I./inc # 指定头文件搜索目录 -L./lib # 指定库文件目录 -lpthread # 链接线程库 -DDEBUG # 定义宏DEBUG示例完整编译bashgcc main.c calc.c -o app -g -Wall -O0 -I./include -lpthread四、gdb 调试工具C 语言调试神器前置条件编译时必须加-g参数gcc main.c -o app -g1. 启动 gdbbashgdb ./app2. 核心调试命令运行程序plaintextrun [参数] # 从头运行程序 start # 运行到main函数第一行停下断点 breakplaintextb main # 在main函数打断点 b 15 # 在15行打断点 b main.c:20 # 指定文件行号断点 info break # 查看所有断点 delete 1 # 删除1号断点 clear 15 # 删除15行断点单步调试plaintextn(next) 单步跳过不进入函数 s(step) 单步进入函数内部 finish 跳出当前函数 c(continue) 继续运行到下一个断点查看变量 / 内存plaintextprint i # 打印变量i值 p i # 打印变量地址 display i # 每次停下自动打印i undisplay # 取消自动显示 x/20xw 地址 # 查看内存20个4字节十六进制栈、跳转、退出plaintextbt(backtrace) # 打印函数调用栈 frame 2 # 切换到第二层栈帧 list(l) # 查看当前附近代码 list 10,20 # 查看10-20行 quit(q) # 退出gdb五、Git 版本控制工具1. 基础配置仅第一次使用bashgit config --global user.name 张三 git config --global user.email xxx163.com # 查看配置 git config --list2. 仓库初始化 / 克隆bash# 新建本地仓库 git init # 拉取远程仓库 git clone https://gitee.com/xxx/demo.git3. 日常提交流程工作区→暂存区→本地仓库bashgit status # 查看文件状态 git add main.c # 添加单个文件到暂存区 git add . # 添加所有修改文件 git commit -m 完成加法函数 # 提交到本地仓库 # 查看提交日志 git log git log --oneline # 简洁单行日志4. 分支操作bashgit branch # 查看本地分支 git branch dev # 创建dev分支 git checkout dev # 切换到dev分支 # 新版gitgit switch dev git checkout -b test # 创建并切换test分支 # 分支合并 git checkout main git merge dev # 删除分支 git branch -d dev5. 远程仓库推送拉取bash# 关联远程仓库 git remote add origin https://xxx.git git remote -v # 查看远程地址 git push origin main # 推送本地main到远程 git pull origin main # 拉取远程更新到本地6. 撤销修改常用bashgit checkout -- main.c # 丢弃工作区未add的修改 git reset HEAD main.c # 把文件从暂存区退回工作区 git reset --hard 提交ID # 回退到指定提交谨慎六、Makefile 编写自动化编译大型 C 项目必备1. Makefile 基础规则语法格式makefile目标: 依赖文件 命令开头必须是Tab键不能空格执行命令make/make clean2. 最简示例单文件 main.c文件结构plaintextmain.c MakefileMakefile 内容makefileapp: main.c gcc main.c -o app -g -Wall # 清理目标文件、可执行程序 clean: rm -rf app *.o使用bashmake # 编译生成app make clean # 删除编译产物3. 多文件项目通用 Makefile工程模板项目结构plaintextsrc/ main.c calc.c include/ calc.h obj/ # 存放.o目标文件 Makefile通用可复用 Makefile带变量、自动搜索、通配符makefile# 1. 定义变量简化修改 CC gcc CFLAGS -g -Wall -O0 -I./include # 编译参数 SRC $(wildcard src/*.c) # 匹配src下所有.c OBJ $(patsubst src/%.c,obj/%.o,$(SRC)) # 替换.c为obj/.o TARGET app # 最终可执行文件名 # 2. 主目标链接所有.o生成程序 $(TARGET): $(OBJ) $(CC) $(OBJ) -o $(TARGET) -lpthread # 3. 模式规则所有.c编译为obj下的.o obj/%.o: src/%.c mkdir -p obj # 不存在则创建obj目录 $(CC) $(CFLAGS) -c $ -o $ # 4. 清理规则 clean: rm -rf $(TARGET) obj/*.o obj # 伪目标防止有文件名叫clean导致命令失效 .PHONY: clean关键内置变量说明$当前规则的第一个依赖文件$当前规则的目标文件wildcard src/*.c自动匹配所有 c 文件patsubst批量字符串替换4. Makefile 常用进阶功能1自动推导省略重复 gcc2伪目标.PHONY当目录存在名为clean的文件时make 会误认为是文件目标加.PHONY: clean强制当作命令执行。3条件判断、宏定义makefileDEBUG 1 ifeq ($(DEBUG),1) CFLAGS -DDEBUG -O0 else CFLAGS -O2 endif4. 多目标同时编译makefileall: app test app: main.o gcc main.o -o app test: test.o gcc test.o -o test执行make all七、开发完整工作流程总结Linux 下用vim编写 .c/.h 源码编写 Makefile执行make一键编译调试gdb ./app打断点单步调试版本管理git add → git commit → git push 保存代码日常操作ls/cd/find/grep/tail 查看文件日志、进程