二、Linux 开发工具

1、vim 编辑器

正常模式与插入模式

Vim 的默认启动模式是正常模式 (Normal Mode),用于执行命令和导航。在正常模式下按 i 进入插入模式 (Insert Mode),可以编辑文本。按 Esc 返回正常模式。

插入模式的其他进入方式:

  • a:在当前光标后插入
  • o:在当前行下方新建一行并插入
  • I:移动到行首并插入
  • A:移动到行尾并插入

保存与退出

在正常模式下执行以下操作:

  • :w:保存文件
  • :q:退出(未修改时)
  • :q!:强制退出,放弃修改
  • :wq:x:保存并退出
  • ZZ(大写):快捷保存并退出

批量注释

块操作注释(适合多行):

  1. Ctrl + v 进入可视块模式
  2. 用方向键选择要注释的行
  3. I(大写),输入注释符号(如 #//
  4. Esc,所选行首会自动添加注释符号

取消注释

  1. 同样用 Ctrl + v 选择注释符号
  2. d 删除

搜索与替换

搜索

  • /keyword:向前搜索关键词
  • ?keyword:向后搜索
  • n:跳转到下一个匹配项
  • N:跳转到上一个匹配项

替换

  • :%s/old/new/g:全局替换所有 oldnew
  • :%s/old/new/gc:全局替换,每次询问确认
  • :10,20s/old/new/g:替换第 10-20 行的内容

快速跳转

行内跳转

  • 0:跳转到行首
  • ^:跳转到第一个非空白字符
  • $:跳转到行尾
  • w:按单词向前移动
  • b:按单词向后移动

文件内跳转

  • gg:跳转到文件首行
  • G:跳转到文件末行
  • :nnG:跳转到第 n 行(如 :1010G
  • Ctrl + o:返回上一个位置
  • Ctrl + i:前进到下一个位置

标记跳转

  • m{a-z}:设置标记(如 ma
  • ```a``:跳转到标记 a 的位置
  • :跳转到上次编辑的位置 复制代码

2、Git 基础操作与概念

git clone

用于将远程仓库克隆到本地。执行以下命令会将远程仓库复制到当前目录:

bash 复制代码
git clone <repository-url>

可选参数 -b 指定分支:

bash 复制代码
git clone -b <branch-name> <repository-url>
git add

将文件变更添加到暂存区。添加特定文件:

bash 复制代码
git add <filename>

添加所有变更:

bash 复制代码
git add .
git commit

提交暂存区的变更到本地仓库。附带提交信息:

bash 复制代码
git commit -m "commit message"

修改上一次提交(未推送时):

bash 复制代码
git commit --amend
git pull

拉取远程分支并合并到当前分支:

bash 复制代码
git pull origin <branch-name>

等同于 git fetch + git merge

git push

推送本地提交到远程分支:

bash 复制代码
git push origin <branch-name>

强制推送(谨慎使用):

bash 复制代码
git push -f origin <branch-name>

分支管理

创建分支

基于当前分支创建新分支:

bash 复制代码
git branch <new-branch-name>

创建并切换到新分支:

bash 复制代码
git checkout -b <new-branch-name>
切换分支

切换到已有分支:

bash 复制代码
git checkout <branch-name>
合并分支

将指定分支合并到当前分支:

bash 复制代码
git merge <branch-name>
删除分支

删除本地分支:

bash 复制代码
git branch -d <branch-name>

强制删除未合并分支:

bash 复制代码
git branch -D <branch-name>

删除远程分支:

bash 复制代码
git push origin --delete <branch-name>

代码备份策略

常规备份

通过定期提交和推送到远程仓库实现备份:

bash 复制代码
git add .
git commit -m "Backup: <date>"
git push origin main
使用标签(Tag)

为重要版本创建标签:

bash 复制代码
git tag -a v1.0 -m "Release version 1.0"
git push origin v1.0
分支备份

创建专用备份分支:

bash 复制代码
git checkout -b backup-<date>
git push origin backup-<date>
镜像仓库

添加额外远程仓库作为备份:

bash 复制代码
git remote add backup <backup-repo-url>
git push backup --all

注意事项

  • 强制推送 (-f) 可能覆盖他人工作,需团队协商后使用
  • 合并分支前建议先执行 git pull 更新本地代码
  • 敏感数据(如密码、密钥)不应提交到 Git
  • 大型文件建议使用 Git LFS 或排除在版本控制外

3、Makefile + CMake基础

Makefile 编译规则

Makefile 用于定义编译规则,自动化构建过程。一个典型的 Makefile 包含目标、依赖和命令。

makefile 复制代码
# 定义编译器和编译选项
CC = gcc
CFLAGS = -Wall -g

# 定义目标文件和可执行文件
TARGET = myprogram
OBJS = main.o utils.o

# 默认目标
all: $(TARGET)

# 生成可执行文件
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $@ $^

# 编译每个源文件
%.o: %.c
    $(CC) $(CFLAGS) -c $<

# 清理生成的文件
clean:
    rm -f $(OBJS) $(TARGET)

多文件编译

多文件编译通常涉及多个源文件和头文件。Makefile 可以管理这些依赖关系。

makefile 复制代码
# 定义源文件和头文件
SRCS = main.c utils.c
HDRS = utils.h
OBJS = $(SRCS:.c=.o)

# 生成可执行文件
myprogram: $(OBJS)
    $(CC) $(CFLAGS) -o $@ $(OBJS)

# 自动生成依赖关系
%.o: %.c $(HDRS)
    $(CC) $(CFLAGS) -c $<

clean:
    rm -f $(OBJS) myprogram

CMake 工程配置

CMake 是一个跨平台的构建工具,可以生成 Makefile 或其他构建系统的配置文件。

cmake 复制代码
# CMake 最低版本要求
cmake_minimum_required(VERSION 3.10)

# 项目名称
project(MyProject)

# 设置编译选项
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -g")

# 添加可执行文件
add_executable(myprogram main.c utils.c)

# 添加头文件目录
target_include_directories(myprogram PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

简单编译脚本

对于小型项目,可以使用简单的 Shell 脚本进行编译。

bash 复制代码
#!/bin/bash

# 编译选项
CFLAGS="-Wall -g"

# 编译所有源文件
gcc $CFLAGS -o myprogram main.c utils.c

# 运行程序
./myprogram

总结

  • Makefile:适合管理复杂的编译规则和依赖关系。
  • 多文件编译:通过 Makefile 或 CMake 管理多个源文件和头文件。
  • CMake:跨平台构建工具,适合大型项目。
  • 简单编译脚本:适用于小型项目或快速原型开发。
相关推荐
DianSan_ERP7 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
恒5397 小时前
Linux文件系统I
linux·运维·服务器
阿成学长_Cain7 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库
黯然神伤8888 小时前
AlmaLinux设置软件下载源
linux·alma
青瓦梦滋8 小时前
协议定制/序列化-反序列化(Linux视角)
linux·服务器·网络·c++
运维老郭10 小时前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
珠海西格电力11 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
阿成学长_Cain11 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
小羊Yveesss12 小时前
2026年微信小程序后端怎么搭建?后台、数据、接口和运维怎么选
运维·微信小程序·小程序