Linux: Phase 1 Mini Project——搭建个人开发环境

这是 Phase 1 的验收项目。你将综合运用前 5 课学到的全部技能——文件操作、目录导航、终端快捷键——从零搭建一个可用、规范的个人 Linux 开发环境。

📋 前置知识:需要先掌握以下内容

1. 你将学到


2. 小明的"环境一团糟"的故事

(1) 痛点:文件乱放,每次找东西都像寻宝

小明用 Linux 三个月了,但每次使用都越来越痛苦:

(2) 标准化的解法

小明决定用 Phase 1 学到的技能,花 10 分钟规范自己的开发环境:标准目录 + 实用别名 + 运行时安装。之后他的终端命令从 10 键变成了 2 键。

(3) 收益:秩序带来效率

规范化的开发环境让小明不需要"思考"文件放在哪——固定的目录结构、快速命令别名、就绪的开发语言环境,让他每天节省至少 30 分钟。


3. 知识点讲解

(1) 标准项目目录结构

一个好的开发环境从目录结构开始。推荐的开发者目录布局:

TEXT 📖 仅展示

~/projects/          # 所有项目
├── web/             # Web 项目
│   ├── frontend/
│   └── backend/
├── scripts/         # Shell 脚本
├── learning/        # 学习实验
├── notes/           # 笔记和文档
└── tmp/             # 临时文件(可随时清理)

(2) PS1——定制 Shell 提示符

PS1(Prompt String 1)环境变量控制你的终端提示符长什么样。

BASH
# 默认格式
# user@host:current_dir$

# 常见自定义
export PS1='\u@\h:\w\$ '           # user@host:/path/to/dir$
export PS1='\[\033[01;32m\]\u\[\033[00m\]:\w\$ '     # 带颜色
export PS1='\n\[\033[1;34m\]\w\[\033[0m\]\n\$ '       # 分两行显示

ℹ️ 说明:PS1 定制的转义字符中,\u 是用户名、\h 是主机名、\w 是完整路径、\W 仅显示当前目录名。分两行显示(在 PS1 中加入 \n)的提示符在长路径时不会压缩输入空间,非常推荐。

常用转义字符:

转义 含义
\u 当前用户名
\h 主机名(短格式)
\w 当前工作目录(完整路径)
\W 当前目录名(仅最后一级)
\d 日期
\t 时间(24 小时制)
\$ #(root)或 $(普通用户)
\n 换行

(3) alias——给你的命令起个绰号

BASH
# 基本语法
alias 短名字='长命令'

# 常用别名
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias cls='clear'

> 💡 **提示**:别名(alias)最大的价值是将高频长命令缩短为两三个字母——比如 `ll` 代替 `ls -la`、`..` 代替 `cd ..`。先把最常用的 3-5 个别名配好,比一次性配几十个更实用。

(4) .bashrc 配置文件

~/.bashrc 是 bash 启动时加载的配置文件。每次打开新的终端窗口时,bash 会执行 .bashrc 中的所有命令。

BASH
# 编辑 .bashrc
nano ~/.bashrc

# 让修改立即生效(而不需要关闭终端再打开)
source ~/.bashrc

▶ 示例:创建标准目录结构

BASH
# 回到家目录
cd ~

# 创建并验证标准目录
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}

# 查看效果
ls -la ~/projects

输出:

TEXT 📖 仅展示
total 28
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 learning
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 notes
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 scripts
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 tmp
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 web

▶ 示例:定制 PS1 提示符(临时生效)

BASH
# 在当前终端试试不同的提示符
export PS1='\u:\w\$ '
# 结果:alice:/home/alice$

export PS1='\n\[\033[1;32m\]\u@\h\[\033[0m\]\n\w\$ '
# 结果:(绿色)username@hostname
#       /current/path$

输出:

TEXT 📖 仅展示
alice:/home/alice$

alice@ubuntu
/home/alice$

▶ 示例:添加别名(永久生效)

BASH
# 编辑 .bashrc
echo '# 我的自定义别名' >> ~/.bashrc
echo "alias ll='ls -la'" >> ~/.bashrc
echo "alias ..='cd ..'" >> ~/.bashrc
echo "alias cls='clear'" >> ~/.bashrc
echo "alias myip='curl -s ifconfig.me'" >> ~/.bashrc

# 使生效
source ~/.bashrc

# 测试
ll
myip

输出:

TEXT 📖 仅展示
total 48
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
-rw-r--r--  1 alice alice 3771 Jul  8 10:23 .bashrc
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 projects
203.0.113.42

▶ 示例:安装 Python 和 Node.js

BASH
# 安装 Python3 和 pip
sudo apt update
sudo apt install -y python3 python3-pip

# 验证
python3 --version
# 输出:Python 3.10.12

# 安装 Node.js(从 NodeSource 官方源)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 验证
node --version
# 输出:v20.12.0
npm --version

输出:

TEXT 📖 仅展示
Python 3.10.12
v20.12.0
10.5.0

▶ 示例:验证环境就绪

BASH

echo "=== 操作系统 ===" && lsb_release -d
echo "=== 家目录结构 ===" && ls -la ~/projects/
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== 别名 ===" && alias | head -5
echo "=== PS1 ===" && echo $PS1

输出:

TEXT 📖 仅展示
=== 操作系统 ===
Description:    Ubuntu 22.04.3 LTS
=== 家目录结构 ===
total 28
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 learning
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 notes
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 scripts
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 tmp
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 web
=== Shell ===
/bin/bash
=== Python ===
Python 3.10.12
=== Node.js ===
v20.12.0
=== 别名 ===
alias cls='clear'
alias la='ls -A'
alias ll='ls -la'
=== PS1 ===
\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ 

▶ 综合示例:完整的开发环境搭建脚本

将这个脚本保存为 ~/setup-dev.sh,一次运行即可完成全部配置:

BASH
#!/bin/bash

set -e  # 遇到错误立即退出

echo "开始搭建 Linux 开发环境..."

# 1. 创建目录结构
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
echo "✅ 目录结构创建完成"

# 2. 配置 .bashrc 别名和 PS1
cat >> ~/.bashrc << 'EOF'

# ---- 自定义配置开始 ----

# 别名
alias ll='ls -la'
alias la='ls -A'
alias ..='cd ..'
alias cls='clear'
alias myip='curl -s ifconfig.me'

# PS1 提示符
export PS1='\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '

# ---- 自定义配置结束 ----
EOF
echo "✅ .bashrc 配置完成"

# 3. 安装开发工具
sudo apt update
sudo apt install -y build-essential curl wget git vim htop
echo "✅ 开发工具安装完成"

# 4. 验证
source ~/.bashrc
echo "=== 环境验证 ==="
echo "Python: $(python3 --version 2>/dev/null || echo '未安装')"
echo "Node.js: $(node --version 2>/dev/null || echo '未安装')"
echo "Git: $(git --version 2>/dev/null || echo '未安装')"

echo "✅ 全部完成!请执行 source ~/.bashrc 或重新打开终端"
BASH
# 运行脚本
chmod +x ~/setup-dev.sh
./setup-dev.sh

❓ 常见问题

Q: .bashrc.bash_profile 有什么区别? A: \1

Q: alias 重启后还在吗? A: 只在当前终端会话有效(临时)。要想永久生效,必须将 alias 命令写入 ~/.bashrc

Q: 怎么让别名对所有用户生效? A: 写入全局配置 /etc/bash.bashrc/etc/profile.d/custom.sh(需要 root 权限)。

Q: PS1 提示符里可以显示 Git 分支吗? A: 可以的。用 __git_ps1 函数(需要安装 bash-completion)或在 PS1 中加入 $(git branch 2>/dev/null | grep '*' | sed 's/* //')

Q: 环境装坏了怎么恢复? A: 如果 .bashrc 配错了,可以用 bash --noprofile --norc 启动裸 bash,然后编辑修复。或用 cp ~/.bashrc ~/.bashrc.backup 提前备份。


📖 小节


📝 作业

  1. 基础题(难度⭐):创建你的个人开发目录结构(至少包含 projects/scripts/learning),并配置 3 个实用别名(如 ll..cls)写入 .bashrc
  2. 进阶题(难度⭐⭐):定制 PS1 提示符显示用户名、当前目录和 Git 分支,并安装一个开发语言运行时(Python 或 Node.js)
  3. 挑战题(难度⭐⭐⭐):写一个 ~/projects/scripts/info.sh 脚本,输出系统版本、内核、磁盘和内存信息,要求加入 set -e 错误处理和格式化输出
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏