由于我是记忆力笨蛋,我把经常用到的一些程序执行语句记在此文档之中 ( > w < )
git
- 初始化本地仓库(首次使用)
bash
git init- 添加文件到暂存区
bash
git add . # 添加所有文件
git add README.md # 添加单个文件
git add folder/ # 添加整个文件夹- 提交(生成本地版本)
bash
git commit -m "提交消息"- 连接远程仓库
bash
git remote add origin https://github.com/用户名/项目名.git- 推送到远程(首次)
bash
git branch -M main
git push -u origin main- 日常推送(后续)
bash
git add .
git commit -m "更新:添加搜索工具"
git commit --amend -m "新的提交信息" # 修改上一次提交的 message(还没 push 时)
git push- 其他
bash
#查看状态与历史
git status # 查看当前修改状态
git log # 查看提交历史
git log --oneline # 简洁版历史
git diff # 查看未暂存的修改
git diff --staged # 查看已暂存的修改
#分支管理
git branch # 查看所有分支
git branch feature-search # 创建新分支
git checkout feature-search # 切换到新分支
git checkout -b feature-search # 创建并切换
git merge feature-search # 合并到当前分支
git branch -d feature-search # 删除分支
#拉取与同步
git pull # 拉取远程更新
git pull origin main # 拉取指定分支
git fetch # 获取远程更新但不合并
#撤销与回退
git restore file.py # 撤销未暂存的修改
git reset HEAD file.py # 撤销暂存
git reset --soft HEAD~1 # 撤销提交但保留修改
git reset --hard HEAD~1 # 完全回退到上一个版本( HEAD~n: HEAD 的前n个提交)
#标签与发布
git tag v1.0.0 # 创建标签
git push --tags # 推送所有标签- 常用
.gitignore
.gitignore
# Python
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
*.so
*.egg
*.egg-info/
dist/
build/
.eggs/
*.log
# 虚拟环境
.venv/
venv/
ENV/
env/
# 系统文件
.DS_Store
Thumbs.db
*.swp
*.swo
# IDE
.vscode/
.idea/
*.imlpython
- 运行.py脚本
python #启动交互式解释器(REPL)
python script.py #运行 Python 脚本
python -c "print('hello')" #直接在命令行执行单行 Python 代码
python -m module_name #以模块方式运行(如 python -m http.server 启动简易 Web 服务器)
py #(Windows)等同于 python,常用于管理多个版本(如 py -3.9)- 安装python包
pip install package_name #安装最新版包
pip install package_name==1.2.3 #安装指定版本
pip install package_name>=1.0,<2.0 #安装符合版本范围的包
pip install -r requirements.txt #批量安装文件中的依赖
pip uninstall package_name #卸载包
pip list #列出当前环境已安装的所有包
pip freeze #以 requirements.txt 格式输出已安装包及版本
pip freeze > requirements.txt #导出当前环境依赖到文件 requirements.txt 中
pip show package_name #查看包的详细信息(版本、依赖、位置等)
pip search keyword #在 PyPI 中搜索包(可能受限,建议用浏览器)
pip cache purge #清理 pip 下载缓存
pip install --upgrade pip #升级 pip 自身 使用镜像源
pip install -i https://mirrors.aliyun.com/pypi/simple/numpy #阿里镜像安装numpy(单次)
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ #设置镜像源为阿里(全局)
pip config list #查看当前设置的镜像源
pip config unset global.index-url #恢复默认源 常用镜像源
阿里云:https://mirrors.aliyun.com/pypi/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 虚拟环境(venv / virtualenv)
python -m venv myenv #创建名为 myenv 的虚拟环境(Python 3.3+)
source myenv/bin/activate #(Linux/macOS) 激活虚拟环境
myenv\Scripts\activate #(Windows) 激活虚拟环境
myenv\Scripts\activate.bat # CMD 环境
myenv\Scripts\Activate.ps1 # PowerShell 环境(可能需要先 Set-ExecutionPolicy)
deactivate #退出当前虚拟环境
rm -rf myenv #(Linux/macOS)或 rmdir /s myenv(Windows) 删除虚拟环境(直接删文件夹)- 包开发与发布相关
python setup.py install #安装本地源码包(旧方式,现在推荐 pip install .)
pip install -e . #以可编辑模式(开发模式)安装当前目录项目
python setup.py sdist bdist_wheel #构建源码分发包和 wheel 包
twine upload dist/* #上传构建好的包到 PyPI(需安装 twine)- 其他实用命令
python -m pip install --upgrade pip 升级 pip(同前)
python -m site 显示 Python 的 site-packages 路径和用户 site 目录
python -c "import sys; print(sys.path)" 快速查看模块搜索路径
python -B 不生成 .pyc 字节码缓存文件
python -O 启用优化模式(移除 assert 等)
python -v 启用详细输出(跟踪导入过程)
where python(Windows)或 which python(Linux/macOS) 查看 Python 解释器路径
pip check 检查当前环境中是否有依赖冲突Node
- 运行时与执行
node //启动交互式 REPL(按 Ctrl+D 两次退出)
node app.js //运行 JavaScript 脚本
node -e "console.log('hi')" //直接执行字符串代码(-e: 直接执行后面的字符串代码)- npm 包管理
//快速启动
npm init -y //快速创建 package.json(项目配置文件)(-y: 跳过所有提问)
npm install express //安装包express并写入 dependencies
npm install -D nodemon //安装开发依赖(热重启)
//-D: --save-dev的缩写, 这个包只在开发时用到,会被写入package.json 中的devDependencies字段
//nodemon: 监听文件变化并自动重启 Node 应用的工具)
//其他
npm uninstall express //卸载包
npm list //列出当前项目所有依赖(树形结构)
npm outdated //检查哪些包有更新
npm update //更新包到符合版本范围的最新版
npm install //依据 package.json 安装所有依赖
npm audit fix //自动修复已知的安全漏洞- npx —— 直接运行包
npx create-react-app my-app //直接用脚手架创建项目(下载create-react-app执行my-app但不保留包)
npx prettier --write . //运行项目本地安装的 prettier 命令(优先去当前项目的本地寻找prettier)
npx -p typescript tsc //临时安装并运行 TypeScript 编译器(指定typescript的tsc命令)- package.json 脚本(对标 Makefile / 自定义命令)
package.json 里的 "scripts" 字段是项目最常用的快捷入口。
json
{
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js",
"test": "jest"
}
}npm run dev //执行 dev 脚本
npm start //特殊简写,等同于 npm run start
npm test //特殊简写,等同于 npm run test
npm run build //使用package.json中的build命令 使用镜像源
npm install express --registry=https://registry.npmmirror.com #淘宝镜像安装numpy(单次)
npm config set registry https://registry.npmmirror.com #设置镜像源为淘宝(全局)
npm config get registry #查看当前设置的镜像源
npm config delete registry #恢复默认源 常用镜像源
淘宝:https://registry.npmmirror.com
华为云:https://mirrors.huaweicloud.com/repository/npm/
- 版本管理(对标
pyenv/python -m venv)
Node.js 版本切换工具 nvm。
nvm install 20 //安装 Node.js 20.x 最新版
nvm use 18 //切换当前终端使用 18.x
nvm list //列出本地已安装的所有版本
nvm alias default 20 //设置默认版本Linux
- 文件与目录操作
pwd //显示当前所在路径
ls -la //列出当前目录所有文件(含隐藏文件,显示详情,-l: 详情,-a :查看隐藏文件(如 .env))
cd ~ //回家目录(~ 代表 /home/用户名)
cd .. //回上一层
./script.sh //相对路径,当前目录下文件
mkdir -p a/b/c //创建多级目录(不加 -p 只能建一层)
touch main.py //创建空文件 / 更新时间戳
cp -r source dest //复制文件或文件夹(-r: 递归,复制文件夹必加)
mv a b //移动文件
mv old.txt new.txt //文件重命名
rm -rf folder //强制删除(高危! -r: 递归,-f: 强制)
pip freeze > requirements.txt // >: 覆盖写入
npm list >> deps.txt // >>: 追加写入
nano script.py //用nano打开文件进行编辑(Ctrl+O 保存,Ctrl+X 退出)
vim script.py //用vim打开文件进行编辑(按 i 进入编辑模式,按 ESC 退出编辑,输入':wq'保存退出,':q!'不保存退出)- 查看文件内容
cat app.log //一次性输出全部内容(文件太大会卡死)
head -n 20 app.log //看文件前 20 行(检查日志头部信息)
tail -f app.log //实时追踪日志新增内容(按 Ctrl+C 退出)
grep "ERROR" app.log //在文件中搜索关键词(配合 tail: tail -f app.log | grep "Error")
less app.log //分页浏览(上下箭头翻页,按 q 退出,查看超大日志)- 系统资源与进程
top / htop //实时查看 CPU/内存占用
ps aux | grep node //查看 Node 相关进程(找后台运行的 Node 进程 PID)
kill -9 PID //强制杀死进程
df -h //查看磁盘剩余空间
du -sh * //查看当前目录下各文件夹大小- 网络与端口
curl ifconfig.me //查看服务器公网 IP
netstat -tlnp //查看所有正在监听的端口及对应进程
lsof -i :3000 //直接查看 3000 端口被什么占用
ping baidu.com //测试网络连通性- 压缩与解压
tar -czvf archive.tar.gz folder/ //压缩文件夹为 .tar.gz(-c: 创建,-z: gzip,-v: 显示过程,-f: 指定文件名)
tar -xzvf archive.tar.gz //解压 .tar.gz 文件
unzip file.zip //解压 .zip 文件- 权限管理
chmod +x script.sh //给脚本添加可执行权限
chmod 600 ~/.ssh/id_rsa //设置私钥文件为仅本人可读
# 权限数字:读(4) + 写(2) + 执行(1)
# 755 = 主人(7=4+2+1) 同组(5=4+1) 外人(5=4+1) —— 常用于网站文件夹
# 600 = 主人(6=4+2) 同组(0) 外人(0) —— 私钥专用- 后台运行
nohup node app.js & //后台运行 Node 服务
pm2 start app.js //pm2进程守护(需安装)Docker
- 镜像与容器管理(最常用三连)
docker ps -a # 查看所有容器(含已停止的)(-a: 显示全部, 不加只看运行中)
docker images # 查看本地已下载的镜像列表
docker pull node:18 # 从仓库拉取镜像(如 Node.js 18 版本)- 运行容器
docker run -d --name myapp -p 3000:3000 node:18
# --name: 起名,-d: 后台运行,-p: 宿主机端口
#把容器的 3000 端口映射到node服务器的 3000 端口
docker run -d --name mysql-db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0
#在初始化时强制设置 MySQL 的 root 密码(-e: 设置环境变量)
docker run -d --restart unless-stopped --name app node:18
#自动重启策略- 查看日志与进入容器内部
docker logs -f container_id
# 实时查看容器日志(Ctrl+C 退出,类似 tail -f)
docker exec -it container_id /bin/bash
# 进入容器内部的命令行
# 退出容器终端时输入 exit 回车- 重启停止与删除(清理环境)
docker restart container_name #重启单个容器(改完代码,配置后常用)
sudo systemctl restart docker # 重启整个 Docker 服务
docker stop container_id # 停止运行中的容器
docker start container_id # 启动已停止的容器
docker rm container_id # 删除容器(需先停止)
docker rmi image_id # 删除镜像(需先删除依赖它的容器)
docker system prune -a # 极限清理:删除所有停止的容器、未使用的镜像(危险)- Docker Compose(批量管理)
docker-compose up -d # 后台启动 docker-compose.yml 中定义的所有服务(如前后端+数据库)
docker-compose down # 停止并删除该编排下的所有容器
docker-compose logs -f # 查看编排下所有服务的聚合日志
docker-compose restart # 只重启,不重建镜像
docker-compose up -d --build # 重建镜像并重启(修改 Dockerfile 后使用)MySQL
- 连接与登录
mysql -u root -p # 登录本机 MySQL(回车后会提示输入密码)
mysql -u root -p -h 192.168.1.100 -P 3306 # -h: 指定远程主机IP -P: 指定端口(默认3306,连接远程库时使用)
mysql -u root -p -e "SHOW DATABASES;" # -e: 直接在命令行执行一条 SQL 语句,不进入交互界面- 数据库备份与恢复
mysqldump -u root -p dbname > backup_$(date +%Y%m%d).sql
# 导出整个数据库(> 覆盖写入)
# $(date +%Y%m%d) 会自动生成当天的日期,如 backup_20251028.sql
mysqldump -u root -p --no-data dbname > structure.sql
# 只导出表结构(不要数据),常用于迁移空库
mysql -u root -p dbname < backup.sql
# 导入备份文件恢复数据库(< 读取文件),如果 dbname 不存在需要先创建- 常用 SQL 快捷操作(登录 mysql> 交互界面)
SHOW DATABASES; # 查看所有数据库
CREATE DATABASE mydb CHARACTER SET utf8mb4; # 创建数据库(指定中文编码,utf8mb4: mysql中的UTF-8)
USE mydb; # 切换到指定数据库
SHOW TABLES; # 查看当前库的所有表
DESC users; # 查看 users 表的结构(有哪些字段)
SELECT * FROM users; # 查询数据
EXIT; # 退出 MySQL 交互界面(或按 Ctrl+D)