1.1.2 终端基础操作

这一节开始真正动手使用终端。你会先学会判断“我现在在哪个目录”,再掌握最常用的文件、目录、路径、管道和环境变量操作,为后面运行 Python、管理依赖和使用 Git 打基础。
- 掌握 10+ 个核心命令,覆盖日常 90% 的操作
- 理解绝对路径和相对路径
- 学会使用管道和重定向
- 理解环境变量的概念
首先,找到并打开你的终端:
| 操作系统 | 怎么打开 |
|---|---|
| Windows | 搜索 “PowerShell” 或 “Windows Terminal”,点击打开 |
| macOS | Command + 空格 搜索 “Terminal”,回车打开 |
| Linux | Ctrl + Alt + T |
你会看到一个窗口,里面有一个闪烁的光标,等着你输入命令。这就是终端。
第一部分:路径——你在哪里?
Section titled “第一部分:路径——你在哪里?”命令行没有图形界面,你需要用文字告诉计算机”我要操作哪个文件夹里的东西”。这就是路径。
你现在在哪?
Section titled “你现在在哪?”pwdpwd = Print Working Directory(打印当前工作目录)
输出可能是这样的:
/Users/zhangsan # macOS/home/zhangsan # LinuxC:\Users\zhangsan # Windows PowerShell这就是你当前所在的文件夹,叫做工作目录。
绝对路径 vs 相对路径
Section titled “绝对路径 vs 相对路径”/Users/zhangsan/projects/ai-course/data/train.csv这是一个绝对路径——从根目录 / 开始,完整地描述了文件的位置。就像现实中的完整地址:“中国北京市海淀区中关村大街1号”。
data/train.csv这是一个相对路径——相对于你当前所在的文件夹。如果你当前在 /Users/zhangsan/projects/ai-course/,那么 data/train.csv 就等于上面那个绝对路径。就像说”隔壁楼2层”。
路径中的特殊符号
Section titled “路径中的特殊符号”| 符号 | 含义 | 例子 |
|---|---|---|
/ | 根目录(所有文件的起点) | cd / |
~ | 当前用户的主目录(Home) | cd ~ 等于 cd /Users/zhangsan |
. | 当前目录 | ./run.py 表示当前目录下的 run.py |
.. | 上一级目录 | cd .. 回到上一层 |
一个练习帮你理解:
# 假设你在 /Users/zhangsan/projects/ai-course
pwd # 输出: /Users/zhangsan/projects/ai-coursecd .. # 回到上一级pwd # 输出: /Users/zhangsan/projectscd ~ # 回到 Home 目录pwd # 输出: /Users/zhangsancd ~/projects/ai-course # 用绝对路径回去pwd # 输出: /Users/zhangsan/projects/ai-course第二部分:核心命令
Section titled “第二部分:核心命令”以下命令是你每天都会用到的。先跟着敲一遍,不需要背,用多了自然就记住了。
cd — 切换目录
Section titled “cd — 切换目录”cd projects # 进入 projects 文件夹cd .. # 回到上一级cd ~ # 回到 Home 目录cd ~/Desktop # 去桌面cd - # 回到上一次所在的目录(很实用!)ls — 列出文件
Section titled “ls — 列出文件”ls # 列出当前目录下的文件和文件夹ls -l # 详细列表(显示大小、日期、权限)ls -a # 显示隐藏文件(以 . 开头的文件)ls -la # 两者组合ls projects/ # 列出 projects 文件夹里的内容文件和文件夹操作
Section titled “文件和文件夹操作”mkdir — 创建文件夹
Section titled “mkdir — 创建文件夹”mkdir my-project # 创建一个文件夹mkdir -p a/b/c # 一次性创建多层嵌套的文件夹touch — 创建空文件
Section titled “touch — 创建空文件”touch hello.py # 创建一个空的 Python 文件touch README.md # 创建一个空的 Markdown 文件cp — 复制
Section titled “cp — 复制”cp file.txt file_backup.txt # 复制文件cp file.txt ~/Desktop/ # 复制到桌面cp -r my-folder/ my-folder-backup/ # 复制整个文件夹(-r 表示递归)mv — 移动 / 重命名
Section titled “mv — 移动 / 重命名”mv old_name.py new_name.py # 重命名文件mv file.txt ~/Desktop/ # 移动到桌面mv project/ ~/projects/ # 移动文件夹rm — 删除
Section titled “rm — 删除”rm file.txt # 删除文件rm -r my-folder/ # 删除文件夹及其所有内容查看文件内容
Section titled “查看文件内容”cat file.txt # 显示整个文件内容(适合小文件)head file.txt # 显示文件前 10 行head -20 file.txt # 显示前 20 行tail file.txt # 显示文件最后 10 行tail -f log.txt # 实时跟踪文件更新(看日志很有用)grep "error" log.txt # 在文件中搜索包含 "error" 的行grep -r "import torch" ./ # 在当前目录下所有文件中搜索grep -n "def train" model.py # 搜索并显示行号grep 是你未来 debug 的好帮手——在几十个文件里快速找到某个函数或变量在哪里被用到。
其他实用命令
Section titled “其他实用命令”clear # 清屏(或按 Ctrl + L)history # 查看你之前执行过的所有命令which python # 查看 python 命令的路径(排查环境问题常用)echo "hello" # 输出一段文字第三部分:管道与重定向
Section titled “第三部分:管道与重定向”
这两个概念是命令行真正强大的地方。
管道的意思是:把前一个命令的输出,作为后一个命令的输入。
# 列出所有文件,从中找到 .py 文件ls -la | grep ".py"
# 查看历史命令中用过的 git 命令history | grep "git"
# 统计当前目录下有多少个 Python 文件ls *.py | wc -l你可以把管道想象成工厂流水线:一个工序的产出是下一个工序的原料。
重定向 > 和 >>
Section titled “重定向 > 和 >>”把命令的输出保存到文件里,而不是显示在屏幕上:
# 把 ls 的结果保存到 filelist.txt(覆盖写入)ls -la > filelist.txt
# 把结果追加到文件末尾(不覆盖)echo "新的一行" >> notes.txt
# 把 Python 脚本的输出保存到文件python train.py > training_log.txt> 是覆盖,>> 是追加。实战中经常用来保存训练日志。
# 运行脚本,把正常输出和错误输出都保存到日志文件python train.py > log.txt 2>&1
# 统计一个 Python 文件有多少行代码cat model.py | wc -l
# 找到所有包含 "TODO" 的文件,并统计数量grep -r "TODO" ./ | wc -l第四部分:环境变量
Section titled “第四部分:环境变量”环境变量是存储在系统中的一些”全局配置”,很多程序会读取它们来决定自己的行为。
查看环境变量
Section titled “查看环境变量”# 查看所有环境变量env
# 查看某一个环境变量的值echo $PATHecho $HOME最重要的环境变量:PATH
Section titled “最重要的环境变量:PATH”PATH 决定了你在终端里输入一个命令时,系统去哪些目录里找这个命令。
echo $PATH这些路径用 : 分隔。当你输入 python 时,系统会依次在这些目录里找 python 这个文件,找到第一个就执行。
如果你遇到 command not found(命令找不到),通常就是因为这个程序没在 PATH 的任何目录里。
设置环境变量
Section titled “设置环境变量”# 临时设置(只在当前终端窗口有效)export MY_API_KEY="your_api_key_here"echo $MY_API_KEY # 输出: your_api_key_here
# 验证:关闭终端重新打开,MY_API_KEY 就没了# 永久设置(写入配置文件)# macOS/Linux 用 zsh:echo 'export MY_API_KEY="your_api_key_here"' >> ~/.zshrcsource ~/.zshrc # 立即生效
# 如果用 bash:echo 'export MY_API_KEY="your_api_key_here"' >> ~/.bashrcsource ~/.bashrc打开终端,依次完成以下操作:
# 1. 确认你在哪pwd
# 2. 去到 Home 目录cd ~
# 3. 创建一个学习项目文件夹mkdir -p ai-study/ch01-tools/terminal-practice
# 4. 进入这个文件夹cd ai-study/ch01-tools/terminal-practice
# 5. 创建几个文件touch hello.py notes.txt data.csv
# 6. 查看创建的文件ls -la
# 7. 往文件里写点东西echo "print('Hello, AI!')" > hello.pyecho "第一天学习笔记" > notes.txt
# 8. 查看文件内容cat hello.pycat notes.txt
# 9. 复制 notes.txt 做个备份cp notes.txt notes_backup.txt
# 10. 确认备份成功ls
# 11. 给 notes.txt 追加内容echo "学了 cd, ls, mkdir, touch, cp, cat 命令" >> notes.txtcat notes.txt
# 12. 搜索包含 "AI" 的文件grep -r "AI" ./
# 13. 回到上一级目录cd ..pwd如果所有步骤都成功了,恭喜你——你已经掌握了命令行最核心的操作。
操作参考与检查点
- 完成第 4 步后,
pwd末尾应该是ai-study/ch01-tools/terminal-practice。 ls -la应该能看到hello.py、notes.txt、data.csv;备份后还应该看到notes_backup.txt。cat hello.py会显示代码文本,不会运行程序。真正运行需要执行python hello.py。>>应该保留原来的笔记并追加第二行。如果原内容消失,多半是不小心用了>。grep -r "AI" ./应该能找到hello.py,因为代码里包含这个字符串。如果找不到,先检查当前目录和大小写。
常用命令速查表
Section titled “常用命令速查表”| 命令 | 用途 | 常用参数 |
|---|---|---|
pwd | 显示当前目录 | |
cd | 切换目录 | .. 上一级,~ Home,- 上一次 |
ls | 列出文件 | -l 详细,-a 隐藏文件 |
mkdir | 创建文件夹 | -p 创建多层 |
touch | 创建空文件 | |
cp | 复制 | -r 复制文件夹 |
mv | 移动/重命名 | |
rm | 删除 | -r 删除文件夹 |
cat | 查看文件 | |
head / tail | 查看开头/结尾 | -n 数字 指定行数 |
grep | 搜索文本 | -r 递归,-n 行号 |
echo | 输出文字 | |
clear | 清屏 | |
history | 历史命令 | |
which | 查看命令路径 |
学完这一页,至少保留这张证据卡:
- 命令
- 你运行过的精确终端命令
- 工作目录
- pwd/当前文件夹及重要文件列表
- 输出
- 复制的命令输出或结果截图
- 失败检查
- 错误的路径、缺少命令、权限问题,或 shell 不匹配
- 期望产出
- 可复现的终端操作,命令和结果并排展示