Skip to content

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/projects

ls (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

核心工作流

  1. Clone: git clone git@github.com:xxx/xxx.git (下载项目)
  2. Branch: git checkout -b feature-login (创建并切换分支)
  3. Add: git add . (暂存所有修改)
  4. Commit: git commit -m "feat: 完成登录功能" (提交存档)
  5. Push: git push origin feature-login (上传云端)

常用别名配置

bash
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch

7. 安全军规

.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用户级bashMac 下 bash 登录时加载,通常会 source .bashrc。
/etc/profile系统级所有 shell慎改! 改错了可能导致系统命令都失效。

怎么生效?

修改完配置文件后,必须 执行 source 命令或者重启终端才能生效!

bash
source ~/.zshrc

Windows

Windows 推荐使用图形界面,或者 PowerShell 配置文件:

  1. GUI: 搜索 "编辑系统环境变量" -> "环境变量" -> 修改 Path
  2. PowerShell Profile:
    powershell
    notepad $PROFILE  # 相当于 Mac 的 .zshrc

Made with vitepress by williamwong