Linux 环境适应 Day 1 全面笔记
一、Linux 基础命令体系
1. 文件与目录操作
| 命令 | 作用 | 示例 | 
|---|---|---|
| pwd | 查看当前工作路径 | pwd | 
| ls -al | 查看所有文件(包括隐藏文件) | ls -al | 
| mkdir | 创建目录 | mkdir test | 
| cd | 进入目录 | cd test | 
| rm | 删除文件或目录 | rm file/rm -rf dir | 
| cp | 复制文件 | cp a.txt b.txt | 
| mv | 移动或重命名 | mv a.txt old.txt | 
| cat | 查看文件内容 | cat a.txt | 
| echo | 输出文本或写入文件 | echo "hello" > a.txt | 
2. 权限管理与执行控制
每个文件有三组权限:
-rwxr-xr-x
| 位 | 含义 | 拥有者 | 
|---|---|---|
| rwx | 读 / 写 / 执行 | 用户 | 
| r-x | 读 / 执行 | 所属组 | 
| r-x | 读 / 执行 | 其他用户 | 
常用命令:
| 命令 | 功能 | 
|---|---|
| chmod +x file.sh | 给脚本添加执行权限 | 
| chmod 744 file | 数字方式设置权限:7(111)=rwx, 4(100)=r-- | 
| chown user file | 修改文件所有者 | 
| chgrp group file | 修改文件所属组 | 
3. 打包与查找
| 命令 | 功能 | 示例 | 
|---|---|---|
| tar -czf name.tar.gz dir | 打包压缩目录 | tar -czf backup.tar.gz ./src | 
| tar -xzf name.tar.gz | 解压缩 | tar -xzf backup.tar.gz | 
| find path -name "pattern" | 查找文件 | find . -name "*.cpp" | 
| find path -mtime +3 | 查找 3 天前的旧文件 | find . -mtime +3 | 
二、Shell 脚本基础(file_ops.sh 案例)
1. 脚本开头
#!/bin/bash
表示使用 Bash 解释器运行脚本。
2. 脚本功能实现
WORKDIR="$HOME/linux_practice/workspace_$(date +%Y%m%d)"
mkdir -p "$WORKDIR"
echo "已创建目录:$WORKDIR"echo "Hello Linux $(date)" > "$WORKDIR/a.txt"
echo "当前用户:$USER" > "$WORKDIR/info.txt"
touch "$WORKDIR/test.cpp"
echo "文件生成完毕"tar -czf "$WORKDIR.tar.gz" -C "$(dirname "$WORKDIR")" "$(basename "$WORKDIR")"
echo "已压缩为:$WORKDIR.tar.gz"find "$HOME/linux_practice" -maxdepth 1 -type d -name "workspace_*" -mtime +3 -exec rm -rf {} \;
echo "已清理三天前旧目录"
3. 命令说明
| 语句 | 解释 | 
|---|---|
| WORKDIR=... | 变量定义:日期命名的文件夹 | 
| mkdir -p | 创建目录(若不存在) | 
| echo "..." > file | 输出并写入文件 | 
| tar -czf | 创建压缩包 | 
| find ... -exec | 批量查找并执行命令 | 
| $HOME$USER | 系统内置变量 | 
| $(date +%Y%m%d) | 命令替换,获取当前日期 | 
4. 文件执行流程
chmod +x file_ops.sh  # 赋予执行权限
./file_ops.sh          # 运行脚本
执行结果:
已创建目录:/home/elias/linux_practice/workspace_20251030
文件生成完毕
已压缩为:/home/elias/linux_practice/workspace_20251030.tar.gz
已清理三天前旧目录
三、C++ 在 Linux 下的编译运行
1. 编译器验证
g++ --version
输出:
g++ (Ubuntu 11.4.0-1ubuntu1~22.04.2)
→ 表示编译器安装成功。
2. 示例程序
hello.cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;int main() {vector<string> words = {"Hello", "Linux", "C++", "World!"};for (const auto& w : words)cout << w << " ";cout << endl;return 0;
}
编译运行命令
g++ hello.cpp -o hello
./hello
输出:
Hello Linux C++ World!
3. 编译流程理解
C++ 编译四阶段:
| 阶段 | 命令 | 说明 | 
|---|---|---|
| 预处理 | g++ -E | 展开宏与头文件 | 
| 编译 | g++ -S | 转为汇编代码 | 
| 汇编 | g++ -c | 生成目标文件 .o | 
| 链接 | g++ | 链接生成可执行程序 | 
四、环境与系统变量理解
| 变量 | 含义 | 示例 | 
|---|---|---|
| $HOME | 当前用户主目录 | /home/elias | 
| $USER | 当前用户名 | elias | 
| $PATH | 可执行文件搜索路径 | /usr/bin:/usr/local/bin | 
查看环境变量:
echo $PATH
修改临时变量:
export PATH=$PATH:/home/elias/mytools
五、思维与总结
今日学习核心
| 模块 | 掌握内容 | 
|---|---|
| Linux 命令 | 文件操作、权限、打包、查找 | 
| Shell 脚本 | 脚本结构、变量、执行权限 | 
| C++ 编译 | g++ 编译、运行与执行流程 | 
| 环境理解 | 环境变量、路径机制 | 
- Shell 不是独立知识,而是 操作系统接口。 
- Linux 下写 C++,命令行是你的 IDE。 
