开发环境工具
后端开发者在 Linux 环境下进行开发必备的工具
一、版本控制
1.1 Git 基础
Git 是最流行的分布式版本控制系统:
# 安装
sudo apt install git
# 配置
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
git config --global core.editor vim
git config --global init.defaultBranch main
# 查看配置
git config --list
git config user.name
基本操作
# 初始化仓库
git init
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
# 查看状态
git status
git status -s # 简短格式
# 添加文件
git add file.txt
git add . # 添加所有
git add -p # 交互式添加
# 提交
git commit -m "message"
git commit -am "message" # 添加并提交
git commit --amend # 修改上次提交
# 查看历史
git log
git log --oneline
git log --oneline --graph --all
git log -p # 显示差异
git log --stat # 显示统计
git log -n 5 # 最近5条
git log --author="name"
git log --since="2025-01-01"
# 查看差异
git diff # 工作区 vs 暂存区
git diff --staged # 暂存区 vs 最新提交
git diff HEAD # 工作区 vs 最新提交
git diff branch1..branch2
分支管理
# 查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
# 创建分支
git branch feature-x
git checkout -b feature-x # 创建并切换
git switch -c feature-x # 新语法
# 切换分支
git checkout main
git switch main # 新语法
# 合并分支
git merge feature-x
git merge --no-ff feature-x # 禁用快进合并
git merge --squash feature-x # 压缩合并
# 变基
git rebase main
git rebase -i HEAD~3 # 交互式变基
# 删除分支
git branch -d feature-x # 已合并的分支
git branch -D feature-x # 强制删除
git push origin --delete feature-x # 删除远程分支
远程操作
# 查看远程
git remote -v
git remote show origin
# 添加远程
git remote add origin git@github.com:user/repo.git
# 拉取
git fetch # 获取但不合并
git pull # 获取并合并
git pull --rebase # 变基方式拉取
# 推送
git push
git push origin main
git push -u origin main # 设置上游分支
git push --force # 强制推送(危险)
git push --force-with-lease # 安全的强制推送
# 标签
git tag v1.0.0
git tag -a v1.0.0 -m "Release 1.0.0"
git push origin v1.0.0
git push origin --tags
撤销与回退
# 撤销工作区修改
git checkout -- file.txt
git restore file.txt # 新语法
# 撤销暂存
git reset HEAD file.txt
git restore --staged file.txt # 新语法
# 回退提交
git reset --soft HEAD~1 # 保留修改在暂存区
git reset --mixed HEAD~1 # 保留修改在工作区
git reset --hard HEAD~1 # 完全回退(危险)
# 创建撤销提交
git revert HEAD # 撤销最近一次
git revert abc1234 # 撤销特定提交
# 找回丢失的提交
git reflog
git reset --hard HEAD@{2}
储藏
git stash # 储藏当前修改
git stash save "message"
git stash list
git stash pop # 恢复并删除
git stash apply # 恢复但不删除
git stash drop # 删除储藏
git stash clear # 清空所有储藏
子模块
# 添加子模块
git submodule add https://github.com/user/repo.git path/to/submodule
# 初始化子模块(克隆后)
git submodule init
git submodule update
# 一步完成
git submodule update --init --recursive
# 更新子模块
git submodule update --remote
Git Hooks
Git hooks 位于 .git/hooks/ 目录:
# pre-commit 示例
#!/bin/sh
# .git/hooks/pre-commit
# 运行测试
npm test
if [ $? -ne 0 ]; then
echo "Tests failed, commit aborted"
exit 1
fi
# 代码格式检查
npm run lint
if [ $? -ne 0 ]; then
echo "Lint failed, commit aborted"
exit 1
fi
.gitignore
# 依赖目录
node_modules/
vendor/
venv/
__pycache__/
# 构建输出
dist/
build/
*.pyc
*.class
# 环境文件
.env
.env.local
*.local
# IDE
.idea/
.vscode/
*.swp
# 系统文件
.DS_Store
Thumbs.db
# 日志
*.log
logs/
二、命令行编辑器
2.1 Vim
Vim 是最强大的命令行编辑器:
# 安装
sudo apt install vim
# 启动
vim file.txt
vim +10 file.txt # 打开并跳到第10行
vim +/pattern file.txt # 打开并搜索
模式
- 普通模式(Normal):按
Esc进入,用于移动和命令 - 插入模式(Insert):按
i进入,用于输入文本 - 可视模式(Visual):按
v进入,用于选择文本 - 命令模式(Command):按
:进入,用于执行命令
基本操作
# 移动
h j k l - 左下上右
w b - 下/上一个词
0 $ - 行首/行尾
gg G - 文件首/尾
:n - 跳到第n行
Ctrl+f/b - 翻页
# 插入
i - 光标前插入
a - 光标后插入
I - 行首插入
A - 行尾插入
o - 下方新行
O - 上方新行
# 删除
x - 删除字符
dd - 删除行
dw - 删除词
d$ - 删除到行尾
D - 删除到行尾
# 复制粘贴
yy - 复制行
yw - 复制词
p - 粘贴到后面
P - 粘贴到前面
# 撤销重做
u - 撤销
Ctrl+r - 重做
# 搜索替换
/pattern - 向下搜索
?pattern - 向上搜索
n/N - 下/上一个结果
:%s/old/new/g - 全局替换
:%s/old/new/gc - 确认替换
# 保存退出
:w - 保存
:q - 退出
:wq - 保存退出
:q! - 强制退出
ZZ - 保存退出
配置 (~/.vimrc)
" 基础设置
set nocompatible
set encoding=utf-8
syntax on
filetype plugin indent on
" 显示设置
set number " 行号
set relativenumber " 相对行号
set cursorline " 高亮当前行
set showmatch " 匹配括号
set wrap " 自动换行
" 缩进设置
set tabstop=4 " Tab 宽度
set shiftwidth=4 " 缩进宽度
set expandtab " Tab 转空格
set autoindent " 自动缩进
set smartindent " 智能缩进
" 搜索设置
set hlsearch " 高亮搜索
set incsearch " 增量搜索
set ignorecase " 忽略大小写
set smartcase " 智能大小写
" 其他
set clipboard=unnamedplus " 系统剪贴板
set mouse=a " 鼠标支持
set backspace=indent,eol,start
2.2 Nano
Nano 更简单易用:
nano file.txt
# 快捷键(^ 表示 Ctrl)
^O - 保存
^X - 退出
^K - 剪切行
^U - 粘贴
^W - 搜索
^G - 帮助
2.3 Emacs
sudo apt install emacs
emacs file.txt
# 基本快捷键
C-x C-s - 保存
C-x C-c - 退出
C-g - 取消
C-s - 搜索
C-/ - 撤销
三、构建工具
3.1 Make
Make 是经典的构建工具:
# Makefile
CC = gcc
CFLAGS = -Wall -O2
TARGET = myapp
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) $(TARGET)
.PHONY: all clean
make # 构建
make clean # 清理
make -j4 # 并行构建
make -n # 干运行
3.2 CMake
CMake 是跨平台构建系统:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyApp VERSION 1.0)
set(CMAKE_CXX_STANDARD 17)
add_executable(myapp main.cpp utils.cpp)
mkdir build && cd build
cmake ..
make
3.3 GCC/G++
# 编译 C
gcc -o program main.c
gcc -Wall -O2 -o program main.c # 带警告和优化
# 编译 C++
g++ -o program main.cpp
g++ -std=c++17 -o program main.cpp
# 只编译不链接
gcc -c main.c # 生成 main.o
# 链接库
gcc -o program main.c -lm # 链接数学库
gcc -o program main.c -L/path -lmylib
# 调试信息
gcc -g -o program main.c # 用于 gdb
四、数据库客户端
4.1 MySQL 客户端
# 安装
sudo apt install mysql-client
# 连接
mysql -u root -p
mysql -u user -p -h hostname
mysql -u user -p database_name
# 常用选项
mysql -e "SELECT * FROM table" # 执行语句
mysql < script.sql # 执行脚本
mysql -t # 表格输出
mysql -N # 不显示列名
mysql --skip-column-names
MySQL 命令行
-- 数据库操作
SHOW DATABASES;
CREATE DATABASE mydb;
USE mydb;
DROP DATABASE mydb;
-- 表操作
SHOW TABLES;
DESCRIBE table_name;
SHOW CREATE TABLE table_name;
-- 用户管理
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON mydb.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'user'@'localhost';
-- 导入导出
SOURCE /path/to/script.sql;
mysqldump 备份
# 导出
mysqldump -u root -p database > backup.sql
mysqldump -u root -p --all-databases > all.sql
mysqldump -u root -p database table1 table2 > tables.sql
# 压缩导出
mysqldump -u root -p database | gzip > backup.sql.gz
# 只导出结构
mysqldump -u root -p --no-data database > schema.sql
# 只导出数据
mysqldump -u root -p --no-create-info database > data.sql
# 导入
mysql -u root -p database < backup.sql
gunzip < backup.sql.gz | mysql -u root -p database
4.2 PostgreSQL 客户端
# 安装
sudo apt install postgresql-client
# 连接
psql -U postgres
psql -U user -h hostname -d database
# 常用选项
psql -c "SELECT * FROM table" # 执行语句
psql -f script.sql # 执行脚本
psql 命令
-- 元命令
\l -- 列出数据库
\c database -- 切换数据库
\dt -- 列出表
\d table -- 表结构
\du -- 列出用户
\q -- 退出
\? -- 帮助
\timing -- 显示执行时间
\x -- 扩展显示
pg_dump 备份
# 导出
pg_dump -U postgres database > backup.sql
pg_dump -U postgres -Fc database > backup.dump # 自定义格式
# 导入
psql -U postgres database < backup.sql
pg_restore -U postgres -d database backup.dump
4.3 Redis 客户端
# 安装
sudo apt install redis-tools
# 连接
redis-cli
redis-cli -h hostname -p 6379
redis-cli -a password
# 常用命令
redis-cli ping
redis-cli info
redis-cli monitor # 实时监控
redis-cli 命令
# 字符串
SET key value
GET key
DEL key
EXPIRE key 3600
TTL key
# 列表
LPUSH list value
RPUSH list value
LRANGE list 0 -1
LPOP list
# 哈希
HSET hash field value
HGET hash field
HGETALL hash
# 集合
SADD set member
SMEMBERS set
# 有序集合
ZADD zset score member
ZRANGE zset 0 -1
# 管理
KEYS pattern
DBSIZE
FLUSHDB
FLUSHALL
INFO
4.4 MongoDB 客户端
# 安装
sudo apt install mongodb-clients
# 或 mongosh(新客户端)
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
sudo apt install mongodb-mongosh
# 连接
mongosh
mongosh "mongodb://localhost:27017"
mongosh "mongodb://user:password@host:27017/database"
mongosh 命令
// 数据库
show dbs
use mydb
db.dropDatabase()
// 集合
show collections
db.createCollection("users")
db.users.drop()
// CRUD
db.users.insertOne({name: "John", age: 30})
db.users.find()
db.users.find({age: {$gt: 25}})
db.users.updateOne({name: "John"}, {$set: {age: 31}})
db.users.deleteOne({name: "John"})
// 索引
db.users.createIndex({name: 1})
db.users.getIndexes()
五、语言版本管理
5.1 nvm - Node.js 版本管理
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
# 使用
nvm list-remote # 可用版本
nvm install 18 # 安装 Node 18
nvm install --lts # 安装 LTS 版本
nvm use 18 # 使用版本
nvm alias default 18 # 设置默认版本
nvm list # 已安装版本
nvm current # 当前版本
nvm uninstall 16 # 卸载版本
5.2 pyenv - Python 版本管理
# 安装
curl https://pyenv.run | bash
# 添加到 ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# 使用
pyenv install --list # 可用版本
pyenv install 3.11.0 # 安装
pyenv versions # 已安装版本
pyenv global 3.11.0 # 全局版本
pyenv local 3.11.0 # 目录版本
pyenv shell 3.11.0 # 临时版本
5.3 gvm - Go 版本管理
# 安装
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
source ~/.gvm/scripts/gvm
# 使用
gvm listall # 可用版本
gvm install go1.21 # 安装
gvm list # 已安装版本
gvm use go1.21 # 使用版本
gvm use go1.21 --default # 设置默认
5.4 sdkman - JVM 语言管理
# 安装
curl -s "https://get.sdkman.io" | bash
source ~/.sdkman/bin/sdkman-init.sh
# Java
sdk list java # 可用版本
sdk install java 17.0.5-tem # 安装
sdk use java 17.0.5-tem # 使用
sdk default java 17.0.5-tem # 默认版本
# 其他工具
sdk install gradle
sdk install maven
sdk install kotlin
5.5 rbenv - Ruby 版本管理
# 安装
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# 添加到 ~/.bashrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
# 使用
rbenv install -l # 可用版本
rbenv install 3.2.0 # 安装
rbenv versions # 已安装版本
rbenv global 3.2.0 # 全局版本
rbenv local 3.2.0 # 目录版本
六、包管理器
6.1 npm (Node.js)
# 初始化项目
npm init
npm init -y # 快速初始化
# 安装依赖
npm install # 安装 package.json 依赖
npm install package # 安装包
npm install package@version # 指定版本
npm install -D package # 开发依赖
npm install -g package # 全局安装
# 更新
npm update # 更新所有
npm update package # 更新特定包
# 卸载
npm uninstall package
npm uninstall -g package
# 查看
npm list # 本地依赖
npm list -g # 全局依赖
npm outdated # 过期的包
# 运行脚本
npm run build
npm start
npm test
# 发布
npm login
npm publish
6.2 pip (Python)
# 安装
pip install package
pip install package==version
pip install -r requirements.txt
# 卸载
pip uninstall package
# 查看
pip list
pip show package
pip freeze # 导出依赖
# 导出依赖
pip freeze > requirements.txt
# 虚拟环境
python -m venv venv
source venv/bin/activate
deactivate
# 镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package
6.3 go mod (Go)
# 初始化
go mod init module-name
# 添加依赖
go get package
go get package@version
# 整理依赖
go mod tidy
# 下载依赖
go mod download
# 查看依赖
go list -m all
6.4 Cargo (Rust)
# 创建项目
cargo new project-name
cargo new --lib library-name
# 构建运行
cargo build
cargo build --release
cargo run
# 测试
cargo test
# 添加依赖
# 编辑 Cargo.toml 或
cargo add package
# 更新依赖
cargo update
七、终端增强
7.1 zsh + Oh My Zsh
# 安装 zsh
sudo apt install zsh
chsh -s $(which zsh)
# 安装 Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 配置主题 (~/.zshrc)
ZSH_THEME="robbyrussell"
# 插件
plugins=(
git
docker
kubectl
zsh-autosuggestions
zsh-syntax-highlighting
)
# 安装插件
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
7.2 fzf - 模糊搜索
# 安装
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
# 使用
fzf # 文件搜索
Ctrl+R # 历史命令搜索
Ctrl+T # 文件选择
Alt+C # 目录切换
# 与其他命令组合
vim $(fzf)
cd $(find . -type d | fzf)
7.3 bat - 增强版 cat
# 安装
sudo apt install bat
# Ubuntu 上可能叫 batcat
alias bat='batcat'
# 使用
bat file.py # 带语法高亮
bat -n file.py # 显示行号
bat -A file.py # 显示特殊字符
7.4 exa/eza - 增强版 ls
# 安装
sudo apt install exa
# 或
cargo install eza
# 使用
exa # 彩色输出
exa -l # 详细信息
exa -la # 包含隐藏
exa --tree # 树状显示
exa --icons # 显示图标
7.5 ripgrep (rg) - 增强版 grep
# 安装
sudo apt install ripgrep
# 使用
rg pattern # 搜索
rg pattern -i # 忽略大小写
rg pattern -t py # 指定文件类型
rg pattern -g '*.py' # glob 模式
rg pattern -C 3 # 上下文
rg pattern --hidden # 包含隐藏文件
7.6 fd - 增强版 find
# 安装
sudo apt install fd-find
# Ubuntu 上可能叫 fdfind
alias fd='fdfind'
# 使用
fd pattern # 搜索文件名
fd -t f pattern # 只搜索文件
fd -t d pattern # 只搜索目录
fd -e py # 指定扩展名
fd -H pattern # 包含隐藏
八、HTTP 客户端
8.1 HTTPie
# 安装
sudo apt install httpie
# GET 请求
http GET https://api.example.com
# POST 请求
http POST https://api.example.com name=value
http POST https://api.example.com < data.json
# Headers
http GET https://api.example.com Authorization:"Bearer token"
# 表单
http --form POST https://api.example.com name=value file@photo.jpg
# 下载
http --download https://example.com/file.zip
8.2 httpbin 测试
# 测试各种 HTTP 功能
http https://httpbin.org/get
http POST https://httpbin.org/post name=test
http https://httpbin.org/headers
http https://httpbin.org/status/404
总结
本章介绍了后端开发者在 Linux 环境下常用的开发工具:
- Git:版本控制是开发的基础
- Vim:命令行编辑器,服务器上必备
- 构建工具:Make、CMake、GCC 等
- 数据库客户端:MySQL、PostgreSQL、Redis、MongoDB
- 版本管理:nvm、pyenv、sdkman 管理多版本
- 终端增强:zsh、fzf、ripgrep 等提高效率
建议:
- Git 必须精通
- Vim 基本操作必须会
- 至少熟悉一种数据库客户端
- 用 nvm/pyenv 等管理语言版本
- 终端增强工具能大幅提升效率
下一章将介绍故障排查与诊断工具。