03. Linux、Git 与安全
课时信息
📅 时间:9:50 - 10:35 🎯 目标:从零掌握 Linux 命令行操作,理解 Git 工作流,建立安全开发意识
1. 终端 (Terminal):开发者的控制台
GUI (图形界面) 是给用户用的,CLI (命令行) 才是给开发者用的。 在 AI 时代,Agent 本质上就是一个一直在敲命令行的超级用户。如果你不懂命令行,你就无法指挥 AI Agent。
为什么用命令行?
- 精准:鼠标点错目录很常见,但路径写对了就是对了。
- 高效:
rm *.log比你一个个选中删除快一万倍。 - 可编程:所有命令都可以写成脚本,自动运行。
2. 导航命令:你在哪里? (GPS)
打开终端,你就是一个在这个文件系统宇宙中漫游的飞船。
pwd (Print Working Directory)
作用:告诉我当前在哪?
bash
pwd
# 输出: /Users/william/projectsls (List)
作用:这里有什么?
bash
ls # 列出当前目录下的文件(只看文件名)
ls -a # 列出所有文件(包括隐藏文件,如 .git, .env)
ls -l # 列出详细信息(权限、大小、修改时间)
ls -lah # 组合技:列出所有文件的详细信息,且文件大小显示为 KB/MB (Human-readable)cd (Change Directory)
作用:带我去...
bash
cd projects # 进入 projects 文件夹
cd .. # 返回上一级目录 (Go Back)
cd ~ # 回到家目录 (Home)
cd / # 去根目录 (Root)
cd - # 回到刚才所在的目录 (类似于电视遥控器的“回看”键)实战练习
尝试在终端中连续执行:cd ~ -> pwd -> mkdir demo -> cd demo -> pwd。
3. 文件操作:增删改查
mkdir & touch (创建)
bash
mkdir my-folder # 创建文件夹 (Make Directory)
mkdir -p a/b/c # 递归创建多级目录 (如果 a 不存在,自动创建)
touch readme.md # 创建一个空文件 (或者更新文件时间戳)cp & mv (复制与移动)
bash
cp file1.txt file2.txt # 复制 file1 为 file2
cp -r src/ dist/ # 递归复制整个文件夹 (Recursive)
mv old.txt new.txt # 重命名 (Move,移动到原地就是重命名)
mv file.txt ../ # 移动文件到上一级rm (删除 - 危险!)
⚠️ 核弹警告
rm 删除的文件不会进回收站,直接消失!
bash
rm useless.txt # 删除文件
rm -r my-folder # 删除文件夹 (Recursive)
rm -rf my-folder # 强制删除 (Force),不提示,极度危险!4. 文本查看:内容透视
别总把文件打开看,直接在终端里看。
cat file.txt:一次性显示全部内容(适合小文件)。head -n 5 file.txt:只看前 5 行。tail -f log.txt:实时监控文件末尾的变化(看服务器日志必备)。grep "error" log.txt:在文件中搜索包含 "error" 的行。
5. 权限管理:谁能动我的奶酪?
Linux 中一切皆主要依靠权限控制(r=读, w=写, x=执行)。
chmod (Change Mode)
当你写了一个脚本 script.sh 却运行不了时,通常是因为没有执行权限。
bash
chmod +x script.sh # 赋予执行权限 (eXecutable)sudo (SuperUser Do)
上帝权限。以管理员身份执行命令。
- 何时用:安装全局软件 (
npm i -g)、修改系统配置。 - 何时不用:项目内部开发 (
npm install),乱用会导致文件权限锁死。
6. Git:时光机与平行宇宙
代码写错了怎么办?Git 让你能回滚。
配置 SSH Key (必做)
为了不每次 push 都输密码,我们需要配置 SSH 公钥。
bash
# 1. 生成 Key (一直回车即可)
ssh-keygen -t ed25519 -C "your@email.com"
# 2. 查看公钥内容 (复制这个内容到 GitHub -> Settings -> SSH Keys)
cat ~/.ssh/id_ed25519.pub核心工作流
- Clone:
git clone git@github.com:xxx/xxx.git(下载项目) - Branch:
git checkout -b feature-login(创建并切换分支) - Add:
git add .(暂存所有修改) - Commit:
git commit -m "feat: 完成登录功能"(提交存档) - Push:
git push origin feature-login(上传云端)
常用别名配置
bash
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch7. 安全军规
.gitignore
千万别把这些传上去:
node_modules/(这是垃圾).env(这是钥匙).DS_Store(这是 Mac 的痕迹)
8. 扩展知识:配置文件在哪里?(环境变量)
很多时候安装官网命令(如 Java, Python)后终端报错 command not found,通常是因为没配置环境变量。
Mac / Linux
配置文件分为 用户级 (只影响你) 和 系统级 (影响所有人)。
| 文件路径 | 作用域 | 适用 Shell | 备注 |
|---|---|---|---|
~/.zshrc | 用户级 | zsh (macOS 默认) | 最常用。如果你用 Mac,改它准没错。 |
~/.bashrc | 用户级 | bash (Linux 默认) | 大部分 Linux 发行版(Ubuntu/CentOS)用这个。 |
~/.bash_profile | 用户级 | bash | Mac 下 bash 登录时加载,通常会 source .bashrc。 |
/etc/profile | 系统级 | 所有 shell | 慎改! 改错了可能导致系统命令都失效。 |
怎么生效?
修改完配置文件后,必须 执行 source 命令或者重启终端才能生效!
bash
source ~/.zshrcWindows
Windows 推荐使用图形界面,或者 PowerShell 配置文件:
- GUI: 搜索 "编辑系统环境变量" -> "环境变量" -> 修改
Path。 - PowerShell Profile:powershell
notepad $PROFILE # 相当于 Mac 的 .zshrc