AI 开发必备命令行基础教程

目录

  1. 为什么命令行对 AI 开发至关重要
  2. 终端基础概念
  3. 文件系统操作命令
  4. 文件查看与编辑
  5. 进程管理
  6. 权限管理
  7. 网络与远程连接
  8. 包管理与环境配置
  9. Shell 高级技巧
  10. AI 开发实战命令场景
  11. 命令速查表

1. 为什么命令行对 AI 开发至关重要

1.1 现实场景

场景 图形界面 命令行
在云服务器上训练模型 ❌ 无法使用 ✅ SSH 连接
批量处理 10000 张图片 逐个点击 一行命令搞定
查看 GPU 实时状态 需要安装监控软件 nvidia-smi 直接看
管理 Conda 环境 不方便 conda activate 秒切
自动化训练流程 手动操作 Shell 脚本自动运行

1.2 AI 开发中命令行的核心作用

数据预处理 → 模型训练 → 超参调优 → 模型部署 → 监控运维
     ↓           ↓          ↓          ↓          ↓
   grep/awk   python     watch     docker     nvidia-smi
   sed/cut    conda      tmux      kubectl    htop

2. 终端基础概念

2.1 什么是 Shell?

Shell 是用户与操作系统内核之间的接口,负责解释你输入的命令。

Shell 类型 特点 默认于
bash 最常用,功能强大 Linux/macOS 默认
zsh 更现代,插件丰富 macOS Catalina+ 默认
fish 用户友好,自动建议 需手动安装
PowerShell Windows 原生 Windows

查看当前 Shell:

echo $SHELL
# /bin/bash

2.2 命令结构

command -option argument
   ↓        ↓        ↓
 命令     选项     参数

# 示例
ls -la /home/user
部分 说明 示例
command 要执行的程序 ls, cd, python
-option 修改命令行为 -l(长格式), -a(显示隐藏)
argument 命令作用的对象 文件名、路径、URL

2.3 路径概念

# 绝对路径:从根目录开始
/home/user/project/data.csv

# 相对路径:从当前位置开始
./data.csv          # 当前目录
../data.csv         # 上级目录
../../data.csv      # 上上级目录

# 特殊目录符号
.   # 当前目录
..  # 上级目录
~   # 用户主目录 (/home/username)
/   # 根目录

2.4 快捷键(必须记住)

快捷键 作用 场景
Ctrl+C 终止当前命令 训练卡死时强制停止
Ctrl+Z 暂停当前命令 临时挂起,用 fg 恢复
Ctrl+D 退出终端 相当于输入 exit
Ctrl+L 清屏 等同于 clear
Ctrl+A 跳到行首 修改长命令开头
Ctrl+E 跳到行尾 修改长命令结尾
Ctrl+U 删除光标前所有字符 快速清空输入
Ctrl+K 删除光标后所有字符 删除后半部分
Ctrl+R 搜索历史命令 快速找到之前用过的命令
Tab 自动补全 文件/命令名补全,最常用!
/ 浏览历史命令 重复执行之前命令

3. 文件系统操作命令

3.1 导航命令

# pwd - 打印当前工作目录(Print Working Directory)
pwd
# /home/username/project

# ls - 列出目录内容(List)
ls                  # 列出当前目录
ls -l               # 详细列表格式
ls -a               # 显示隐藏文件(以 . 开头)
ls -la              # 组合:详细 + 隐藏
ls -lh              # 人类可读的文件大小(K, M, G)
ls -lt              # 按修改时间排序
ls -lS              # 按文件大小排序

# cd - 切换目录(Change Directory)
cd /home/user       # 切换到绝对路径
cd project          # 切换到相对路径
cd ..               # 返回上级目录
cd ~                # 返回用户主目录
cd -                # 返回上一个目录

3.2 文件操作

# 创建文件
touch file.txt           # 创建空文件
touch file1.txt file2.txt # 创建多个文件
> output.txt             # 创建空文件(重定向方式)

# 创建目录
mkdir dir_name           # 创建单层目录
mkdir -p a/b/c/d         # 递归创建多层目录
mkdir project/{data,scripts,outputs}  # 批量创建多个目录

# 复制文件/目录
cp source.txt dest.txt   # 复制文件
cp -r source_dir dest_dir # 递归复制目录
cp -i source.txt dest.txt # 覆盖前询问
cp -u source.txt dest.txt # 仅当源文件更新时复制

# 移动/重命名
mv old.txt new.txt       # 重命名
mv file.txt /home/user/  # 移动文件
mv -i file.txt dest/     # 覆盖前询问

# 删除
rm file.txt              # 删除文件
rm -r dir_name           # 递归删除目录
rm -rf dir_name          # 强制删除(危险!)
rm -i file.txt           # 删除前确认

# 安全删除建议:使用 trash-cli
trash file.txt           # 移到回收站,而非直接删除

# 链接(软链接类似 Windows 快捷方式)
ln -s /path/to/target link_name  # 创建软链接
ln original hard_link    # 创建硬链接

3.3 通配符(Wildcards)

*    # 匹配任意多个字符
?    # 匹配单个字符
[]   # 匹配括号内任一字符

# 示例
ls *.py                 # 列出所有 Python 文件
rm data_?.csv           # 删除 data_1.csv, data_2.csv...
cp train_[0-9].jpg ./   # 复制 train_0.jpg 到 train_9.jpg
ls [abc]*.txt           # 列出 a/b/c 开头的 txt 文件

4. 文件查看与编辑

4.1 查看文件内容

# cat - 连接并显示(适合小文件)
cat file.txt
cat file1.txt file2.txt  # 合并显示多个文件

# less - 分页查看(适合大文件,按 q 退出)
less large_log.txt
# 快捷键:空格(下一页) b(上一页) /(搜索) n(下一个匹配)

# head - 显示文件开头
head file.txt           # 默认前10行
head -n 20 file.txt     # 前20行

# tail - 显示文件结尾(查看日志最常用)
tail file.txt           # 默认后10行
tail -n 50 file.txt     # 后50行
tail -f training.log    # 实时追踪文件更新(训练时看日志)

# wc - 统计行数、字数
wc -l file.txt          # 行数
wc -w file.txt          # 单词数

4.2 文本搜索(grep - AI 开发必用)

# 基本搜索
grep "error" log.txt           # 查找包含 error 的行
grep -i "error" log.txt        # 忽略大小写
grep -n "error" log.txt        # 显示行号
grep -v "debug" log.txt        # 反向查找(不含 debug 的行)

# 正则表达式搜索
grep "^2024-01" log.txt        # 以 2024-01 开头的行
grep "loss:[0-9]\+\.[0-9]\+" log.txt  # 匹配 loss: 数字

# 递归搜索目录
grep -r "TODO" ./src/          # 搜索目录下所有文件
grep -r --include="*.py" "import torch" ./  # 只搜索 py 文件

# 常用选项组合
grep -rni "error" ./logs/      # 递归 + 忽略大小写 + 显示行号

4.3 命令行文本编辑(nano - 最易学)

# 打开文件
nano file.txt

# nano 快捷键
Ctrl+O    # 保存
Ctrl+X    # 退出
Ctrl+W    # 搜索
Alt+W     # 下一个匹配
Ctrl+K    # 剪切整行
Ctrl+U    # 粘贴

vim 极简版(服务器标配):
vim 的详细使用教程可以查看我的这篇文章 linux 下vim的使用教程

vim file.txt

# 模式切换
i          # 进入插入模式(开始编辑)
ESC        # 退出插入模式
:wq        # 保存并退出
:q!        # 不保存强制退出
/pattern   # 搜索 pattern
n/N        # 下一个/上一个匹配

5. 进程管理

5.1 查看进程

# ps - 查看进程快照
ps                         # 当前终端的进程
ps aux                     # 所有进程(详细)
ps aux | grep python       # 查找 Python 进程

# top - 动态查看进程(实时)
top                        # 交互式进程查看器
# 快捷键:q(退出) k(杀死进程) P(按CPU排序) M(按内存排序)

# htop - top 的增强版(需安装)
htop                       # 更美观,支持鼠标

# pgrep - 按名称查找进程ID
pgrep python               # 查找所有 python 进程ID
pgrep -f "train.py"        # 匹配完整命令行

5.2 终止进程

# kill - 发送信号
kill PID                   # 正常终止进程
kill -9 PID                # 强制杀死(SIGKILL)
kill -15 PID               # 优雅终止(SIGTERM)

# pkill - 按名称终止
pkill python               # 终止所有 python 进程
pkill -f "train.py"        # 终止特定脚本

# killall - 按名称终止所有
killall python3

5.3 后台运行(AI 训练必备)

# 在命令末尾加 & 让进程后台运行
python train.py &

# 查看后台任务
jobs

# 将后台任务调到前台
fg %1

# 将前台任务挂起(Ctrl+Z)后放后台
bg %1

# nohup - 退出终端后继续运行
nohup python train.py > train.log 2>&1 &

# 2>&1 说明:将错误输出(2)重定向到标准输出(1)

5.4 会话管理(tmux - 神器!)

# 安装 tmux
sudo apt install tmux       # Ubuntu
brew install tmux           # macOS

# 基本操作
tmux new -s training        # 创建名为 training 的会话
tmux ls                     # 列出所有会话
tmux attach -t training     # 重新连接会话
tmux kill-session -t training  # 杀死会话

# tmux 内部快捷键(前缀 Ctrl+B)
Ctrl+B D     # 脱离会话(detach)
Ctrl+B C     # 创建新窗口
Ctrl+B N/P   # 下一个/上一个窗口
Ctrl+B %     # 垂直分屏
Ctrl+B "     # 水平分屏
Ctrl+B 方向键 # 切换分屏

AI 开发典型场景:

# SSH 登录服务器后
tmux new -s training
conda activate pytorch
python train.py --epochs 100
# 按 Ctrl+B D 脱离
# 关闭 SSH 连接,训练继续在后台跑
# 下次连接后:tmux attach -t training

6. 权限管理

6.1 查看权限

ls -l file.txt
# -rw-r--r-- 1 user group 1234 Apr 12 10:00 file.txt
# ↑权限      ↑所有者 ↑组   ↑大小

# 权限解读
# 第1个字符:-文件 d目录 l链接
# 后面9个字符:所有者(u) 组(g) 其他人(o)
# r=读(4) w=写(2) x=执行(1)

6.2 修改权限

# chmod - 修改权限
chmod +x script.sh         # 添加执行权限
chmod 755 script.sh        # rwxr-xr-x
chmod 600 private.txt      # rw-------

# 数字含义
# 7 = 4+2+1 = rwx
# 6 = 4+2 = rw-
# 5 = 4+1 = r-x

# chown - 修改所有者
sudo chown user:group file.txt
sudo chown -R user:group directory/  # 递归修改

6.3 sudo - 超级用户权限

sudo command               # 以 root 权限执行
sudo -i                    # 切换到 root 用户
sudo -u username command   # 以指定用户执行

7. 网络与远程连接

7.1 SSH 远程连接(云服务器必用)

# 基本连接
ssh username@hostname
ssh root@192.168.1.100
ssh -p 2222 user@server.com  # 指定端口

# 密钥登录(免密码)
ssh-keygen -t rsa -b 4096   # 生成密钥对
ssh-copy-id user@server      # 复制公钥到服务器

# 配置文件 ~/.ssh/config
Host myserver
    HostName 192.168.1.100
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/mykey

# 之后只需
ssh myserver

7.2 文件传输

# scp - 安全复制
scp file.txt user@server:/path/          # 上传文件
scp user@server:/path/file.txt ./        # 下载文件
scp -r directory/ user@server:/path/     # 递归上传目录

# rsync - 增量同步(更高效)
rsync -avz local/ user@server:/remote/   # 同步目录
rsync -avz --delete local/ remote/       # 删除目标多余文件

# 下载文件
wget https://example.com/file.zip         # 下载
wget -c https://example.com/file.zip      # 断点续传
curl -O https://example.com/file.zip      # curl 下载

7.3 网络诊断

# ping - 测试连通性
ping google.com
ping -c 4 8.8.8.8          # 只发4个包

# curl - 测试 API 接口
curl https://api.example.com/data
curl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com

# 查看端口占用
netstat -tlnp              # 查看监听端口
lsof -i :8888              # 查看谁占用了8888端口

# 查看 GPU 服务器网络
nvidia-smi                 # 查看 GPU 状态
watch -n 1 nvidia-smi      # 每秒刷新一次

8. 包管理与环境配置

8.1 apt(Ubuntu/Debian)

# 更新软件源
sudo apt update

# 升级已安装软件
sudo apt upgrade

# 搜索软件
apt search python

# 安装软件
sudo apt install python3-pip

# 卸载软件
sudo apt remove package_name
sudo apt purge package_name   # 删除配置文件

8.2 pip(Python 包管理)

# 安装包
pip install torch
pip install numpy==1.24.0
pip install "requests>=2.28"

# 从 requirements.txt 安装
pip install -r requirements.txt

# 查看已安装
pip list
pip show torch

# 升级
pip install --upgrade pip
pip install -U torch

# 卸载
pip uninstall package_name

# 国内镜像加速
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch

8.3 Conda(AI 开发首选)

# 环境管理
conda create -n myenv python=3.10
conda activate myenv
conda deactivate
conda env list
conda env remove -n myenv

# 包管理
conda install numpy pandas matplotlib
conda install -c conda-forge pytorch
conda update --all
conda list

# 环境导出/导入
conda env export > environment.yml
conda env create -f environment.yml

8.4 环境变量

# 查看环境变量
echo $PATH
env                     # 显示所有环境变量

# 设置临时环境变量
export CUDA_VISIBLE_DEVICES=0,1
export PYTHONPATH=/path/to/module:$PYTHONPATH

# 永久设置(写入 ~/.bashrc)
echo 'export CUDA_VISIBLE_DEVICES=0' >> ~/.bashrc
source ~/.bashrc        # 重新加载配置

9. Shell 高级技巧

9.1 重定向与管道

# 重定向
>   # 输出重定向(覆盖)
>>  # 输出重定向(追加)
<   # 输入重定向
2>  # 错误输出重定向
2>&1 # 错误输出合并到标准输出

# 示例
python train.py > train.log 2>&1   # 所有输出写入日志
python train.py >> train.log       # 追加到日志
python train.py 2> error.log       # 只保存错误

# 管道 - 连接命令(AI 开发最常用)
command1 | command2 | command3

# 实战示例
cat log.txt | grep "loss" | tail -n 10
ps aux | grep python | awk '{print $2}' | xargs kill
ls -la | sort -k5 -rn | head -10   # 最大的10个文件

9.2 文本处理三剑客

# grep - 查找(已介绍)

# sed - 流编辑器(替换)
sed 's/old/new/g' file.txt       # 替换所有 old 为 new
sed -i 's/old/new/g' file.txt    # 直接修改文件
sed -n '10,20p' file.txt         # 打印10-20行

# awk - 文本处理语言
awk '{print $1}' file.txt        # 打印第一列
awk -F',' '{print $2}' data.csv  # CSV 第二列
awk '$3 > 0.9 {print $1}' log.txt # 第3列>0.9 打印第1列

# 实战:从训练日志提取准确率
grep "accuracy:" train.log | awk '{print $2}' | tail -n 5

9.3 管道组合示例

# 统计错误类型
grep "ERROR" app.log | awk '{print $5}' | sort | uniq -c

# 找出占用内存最大的5个进程
ps aux | sort -k4 -rn | head -5

# 统计代码行数
find . -name "*.py" | xargs wc -l | tail -1

# 监控 GPU 温度
watch -n 2 nvidia-smi --query-gpu=temperature.gpu --format=csv

9.4 别名与函数

# 设置别名(写入 ~/.bashrc 永久生效)
alias ll='ls -la'
alias gpu='watch -n 1 nvidia-smi'
alias activate='conda activate'
alias python='python3'

# 带参数的函数
gpu_usage() {
    echo "GPU: $1"
    nvidia-smi --id=$1 --query-gpu=utilization.gpu --format=csv
}

# 使用
gpu_usage 0

9.5 历史命令管理

history                 # 查看历史
!!                      # 重复上一条命令
!123                    # 执行历史中第123条命令
!python                 # 执行最近以 python 开头的命令
^old^new                # 替换上条命令的字符串

# 搜索历史(Ctrl+R)
(reverse-i-search)`tra': python train.py --epochs 100

10. AI 开发实战命令场景

10.1 场景一:数据准备

# 下载数据集
wget https://dataset.com/imagenet.zip
unzip imagenet.zip -d data/
tar -xzf dataset.tar.gz

# 查看数据集信息
ls -lh data/ | head -10
du -sh data/                    # 查看总大小
find data/ -name "*.jpg" | wc -l  # 统计图片数量

# 数据预处理
# 批量重命名
for f in *.png; do
    mv "$f" "${f%.png}.jpg"
done

# 按比例划分数据集
ls images/ | shuf | head -n 1000 > train.txt
ls images/ | shuf | head -n 200 > val.txt

10.2 场景二:模型训练

# 创建虚拟环境
conda create -n pytorch python=3.10
conda activate pytorch

# 安装依赖
pip install -r requirements.txt

# 后台训练(关键!)
nohup python train.py --config config.yaml > train.log 2>&1 &

# 查看训练进程
ps aux | grep train.py

# 实时监控训练日志
tail -f train.log

# 监控 GPU
watch -n 1 nvidia-smi

# 训练时挂起(Ctrl+Z),然后放后台
bg
disown        # 脱离终端

10.3 场景三:超参数调优

# 批量运行实验
for lr in 0.001 0.0001 0.00001; do
    for bs in 32 64 128; do
        python train.py --lr $lr --batch_size $bs > logs/lr${lr}_bs${bs}.log
    done
done

# 并行运行(使用 & 和 wait)
python train.py --config config1.yaml &
python train.py --config config2.yaml &
python train.py --config config3.yaml &
wait
echo "所有实验完成"

# 使用 tmux 管理多个实验
tmux new -d -s exp1 "python train.py --config config1.yaml"
tmux new -d -s exp2 "python train.py --config config2.yaml"
tmux ls

10.4 场景四:结果分析

# 从多个日志提取最佳准确率
for log in logs/*.log; do
    echo -n "$log: "
    grep "Best accuracy" "$log" | tail -1 | awk '{print $3}'
done

# 生成统计报告
grep "loss:" train.log | awk '{print $4}' > losses.txt
awk '{sum+=$1; count++} END {print "平均loss:", sum/count}' losses.txt

# 筛选 TensorBoard 日志
tensorboard --logdir runs/ --port 6006 &
# 浏览器打开 http://localhost:6006

10.5 场景五:模型部署

# 导出模型
python export_onnx.py --checkpoint model.pth --output model.onnx

# 用 Docker 部署
docker build -t mymodel .
docker run --gpus all -p 8080:8080 mymodel

# 查看容器状态
docker ps
docker logs container_id

# 使用 systemd 管理服务
sudo systemctl start mymodel.service
sudo systemctl status mymodel.service
sudo journalctl -u mymodel.service -f

10.6 场景六:远程服务器工作流

# 本地 -> 服务器传输代码
rsync -avz --exclude 'data/' --exclude 'logs/' ./ user@server:~/project/

# SSH 登录并启动 tmux 训练
ssh user@server
tmux new -s train
cd ~/project
conda activate pytorch
python train.py
# Ctrl+B D 脱离

# 第二天查看结果
ssh user@server
tmux attach -t train

# 下载结果到本地
scp -r user@server:~/project/logs ./logs/

10.7 场景七:调试技巧

# 查看 Python 路径
which python
python -c "import torch; print(torch.__version__)"

# 查看环境变量
env | grep CUDA

# 测试 GPU 是否可用
python -c "import torch; print(torch.cuda.is_available())"

# 查看文件编码
file -i data.csv

# 比较两个文件差异
diff file1.txt file2.txt

# 实时监控系统资源
htop
iostat -x 1        # 磁盘 IO

11. 命令速查表

基础命令(必须掌握)

命令 作用 示例
ls 列出文件 ls -la
cd 切换目录 cd project/
pwd 当前路径 pwd
cp 复制 cp a.txt b.txt
mv 移动/重命名 mv old new
rm 删除 rm -rf dir/
mkdir 创建目录 mkdir -p a/b/c
cat 查看文件 cat file.txt
less 分页查看 less big.log
grep 搜索文本 grep -r "error" ./
ps 查看进程 ps aux
kill 终止进程 kill -9 PID
chmod 修改权限 chmod +x script.sh
ssh 远程连接 ssh user@host
scp 远程复制 scp file user@host:/

AI 开发高频命令

命令 作用 场景
watch -n 1 nvidia-smi 监控 GPU 训练时看显存
tail -f train.log 实时看日志 监控训练进度
conda activate env 切换环境 换模型框架
nohup python train.py & 后台训练 断开终端继续跑
tmux new -s name 会话管理 远程训练神器
grep "loss" log | tail 提取信息 分析训练结果
rsync -avz local remote 同步代码 上传到服务器
du -sh * 查看大小 检查数据集

管道组合速查

# 查找并杀死进程
ps aux | grep python | awk '{print $2}' | xargs kill -9

# 统计日志中错误数量
grep -c "ERROR" app.log

# 查看最大的5个文件
find . -type f -exec du -h {} + | sort -rh | head -5

# 实时监控并高亮关键词
tail -f log.txt | grep --color=always "error\|warning"

# 批量替换文件内容
find . -name "*.py" -exec sed -i 's/old_name/new_name/g' {} \;

12. 学习路线建议

第1周:掌握基础

  • 每天练习 ls, cd, cp, mv, rm
  • 学会使用 Tab 补全和 历史命令
  • 能够用 nano 编辑文件

第2周:文本处理

  • 熟练使用 grep 搜索
  • 掌握 | 管道组合命令
  • 学会 tail -f 看日志

第3周:环境配置

  • 独立完成 Conda 环境创建
  • 会用 pip 安装包
  • 配置 ~/.bashrc 别名

第4周:远程与后台

  • 学会 SSH 连接服务器
  • 掌握 tmux 会话管理
  • 能用 nohup 后台训练

第5周:实战整合

  • 完整跑通一个训练流程
  • 会用 grepawk 分析日志
  • 写出第一个自动化脚本

13. 常见问题与解决方案

问题 原因 解决
command not found 命令未安装或 PATH 错误 which command 检查
Permission denied 无执行权限 chmod +x file
训练中断 SSH 断开 tmuxnohup
端口被占用 已有进程占用 lsof -i:端口 查杀
磁盘满了 日志太多 du -sh * 找大文件清理
Conda 环境混乱 未激活正确环境 conda activate 明确指定

总结

核心命令(80%场景够用):

ls, cd, pwd, cp, mv, rm, mkdir
cat, less, grep, tail -f
ps, kill, top, htop
ssh, scp, rsync
pip, conda, tmux, nvidia-smi
|, >, >>, &, nohup

学习建议:

  1. 不要死记硬背,用多了自然记住
  2. 遇到不会的命令:command --helpman command
  3. 多写小脚本自动化重复工作
  4. 养成 Ctrl+R 搜索历史的习惯

AI 开发者的命令底线:

能够在云服务器上创建 Conda 环境、启动 tmux 会话、用 nohup 后台训练、用 tail -f 看日志、用 grep 分析结果。

掌握这些,你就不会因为"不会用命令行"而在 AI 学习中卡住了。


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐