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)

→ 表示编译器安装成功。

  1. 示例程序

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。

相关推荐
不像程序员的程序媛6 小时前
Linux本机ping虚机ip Network unreachable
linux·运维·tcp/ip
爱奥尼欧6 小时前
【Linux笔记】网络部分——传输层协议TCP(1)
linux·运维·网络·笔记·tcp/ip·1024程序员节
二进制coder6 小时前
Linux I2C子系统全面详解:从理论到实战
linux·运维·服务器
Lester_11017 小时前
嵌入式学习笔记 - 用泰勒公式解决 tanh函数
笔记·学习·算法
sunshine~~~7 小时前
【笔记】macOs arm架构安装虚拟机Ubuntu环境:ROS2 + Python开发
arm开发·笔记·python·macos·ros2
在坚持一下我可没意见7 小时前
Java 网络编程:TCP 与 UDP 的「通信江湖」(基于TCP回显服务器)
java·服务器·开发语言·笔记·tcp/ip·udp·java-ee
无限进步_7 小时前
C语言字符串连接实现详解:掌握自定义strcat函数
c语言·开发语言·c++·后端·算法·visual studio
oscar9997 小时前
CSP-J教程——第一阶段——第二课:变量与数据类型
c++·数据类型·csp-j
弈风千秋万古愁8 小时前
【PID】连续PID和数字PID chapter1(补充) 学习笔记
笔记·学习·算法·matlab