一、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)
→ 表示编译器安装成功。
- 示例程序
hello.cpp
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。