Linux 基础学习
Linux 基础学习
Linux 模型
- Linux 模型图:

Linux 模型简介
- 内核(
kernel)的作用:- 管理硬件资源:
- cpu——>进程调度;
- 内存——>内存管理;
- 外部设备——>文件管理、网络通信、设备驱动…
- 对上层应用程序提供接口(接口:系统调用)
- 管理硬件资源:
- 系统调用(
system calls):内核给上层应用程序提供的接口(API) - 库函数(
library functions):对系统调用的封装- 例如:
- 库函数:
malloc()-> 系统调用:sbrk - 库函数:
printf()-> 系统调用:write - 对于不同的操作系统,它们的系统调用是不一样的
- 库函数:
- 具有以下性质:
- 方便使用
- 移植性
- 例如:
- 命令解释器(
shell):shell命令shell命令是一类程序,如sh、bash、csh、zsh、ksh…- 命令:一般来说,就是一些简单的可执行程序
- 脚本:命令的集合

常用命令
查看帮助手册(man)
- 使用
man(manual)命令可以查看 Linux 内置的帮助手册。该手册分为多卷,比较重要的是前三卷:- 第一卷是用来查看
shell命令的; - 第二卷是用来查看系统调用相关信息的;
- 第三卷是用来查看库函数信息的。
- 第一卷是用来查看

man命令的格式如下:
1 | |
- 进入帮助界面后,可以采用下列按键浏览帮助信息:

用户子系统命令
- 常见命令:
- 创建用户:
useradd - 删除用户:
userdel - 修改用户密码:
passwd - 切换用户:
su - 退出切换:
exit
- 创建用户:
- Linux 用户
root:根用户,超级用户,拥有最高权限sudoers:管理用户,安装ubuntu的时候,创建的用户默认为sudoers- 可以使用
sudo命令,临时提升其权限。
- 可以使用
- 普通用户
文件子系统命令
- 文件子系统的分门别类:

查看当前工作目录
- 查看当前工作目录:
1 | |
改变当前工作目录
- 改变当前工作目录:

创建目录
- 创建目录:

删除空目录
- 删除空目录:

通配符
- 通配符:
- 注意:
- 匹配文件名字:通配符
- 匹配文件内容:正则表达式
- 注意:

查看目录内容
- 查看目录内容:

ls -i:显示物理文件标识

ls -l中的参数含义:

移动文件和目录
mv移动文件和目录- 在同一个目录内是重命名和覆盖

- 用于重命名或者移动:

复制文件或目录
cp复制文件或目录

删除文件和目录
rm删除文件和目录:

别名
alias给命令起别名

创建文件
touch创建空文件或改变文件时间戳- 文件存在则改变文件时间戳;
- 文件不存在则创建空文件。
echo创建文件并输入简短内容,例如:
1 | |
vim创建文件和编辑文件
查找文件
- 使用
which命令来查找可执行程序的路径:which命令是根据PATH环境变量中的路径依次去查找的,然后显示第一个匹配项,或者显示所有匹配项。

PATH路径展示:

- 使用
find命令查找文件和目录

find命令的常见用法:

查看文件内容
cat命令查看文件:

head命令查看文件的前几行:

tail命令查看文件后几行:

less(more)命令单页浏览文件:

重定向
- 重定向:

- 常见用法:

搜索文件内容
grep命令可以用于搜索文件内容,功能非常强大!grep命令按照正则表达式去搜索文件,如果文件中某一项匹配指定的正则表达式,grep命令则会显示这一项。

正则表达式
- 常用的正则表达式语法规则:

命令的组合
- 命令的组合主要有以下三种方式:

- 第一种组合用法:

- 第二种组合用法:管道

- 第三种组合用法:
xargs

文件权限
- 普通文件:

- 目录文件:

chmod命令改变文件权限:

umask命令文件创建掩码:- 文件和目录在创建的时候都有一个默认的权限,该权限是由文件创建掩码
umask决定的。 - 表示想去掉的权限。
- 文件和目录在创建的时候都有一个默认的权限,该权限是由文件创建掩码

umask命令的用法:

链接
- 硬链接的原理:

- 硬链接的用法:

- 符号链接(软链接)的原理:

- 符号链接(软链接)的用法:
- 对于大多数命令(
rm命令除外 ),如果参数是符号链接,其实操作的是符号链接指向的文件(类似指针的解引用操作)。
- 对于大多数命令(

远程复制
scp命令远程复制:

打包和压缩
tar命令打包和压缩的经典用法:

编译工具链
- 编译工具链,又称为软件开发工具包(SDK)。
编译
生成可执行程序的流程
- 生成可执行程序的流程:

- 对应的
gcc命令如下:

gcc的其它选项:

gcc的其它选项补充说明:

条件编译
条件编译的用法
- 条件编译,就是在预处理阶段决定包含还是排除某些程序片段。

- 用法一:

- 用法二和三:

- 用法四:

条件编译的作用
- 编写可移植程序

- 为宏提供默认定义

- 避免头文件重复包含

- 临时屏蔽包含注释的代码

调试
运行 gdb 调试
- 运行 gdb 调试的一些命令:

- 设置断点:

- 查看断点、删除断点和运行:

- 监视变量:


- 查看内存:

查看 core 文件
- core 文件:程序异常终止时的内存快照(堆、栈、寄存器…)
- 用于错误复现和恢复场景
配置系统能够生成 core 文件
- 配置系统能够生成 core 文件:

生成 core 文件
- 生成 core 文件:

查看 core 文件
- 用 gdb 查看 core 文件,并复现错误:

- 查看栈帧和寄存器信息:

Makefile
- Makefile 是一个脚本文件,使用 make 工具来解释执行。
- Makefile 的作用:
- 实现自动编译
- 实现增量编译(只编译新增和修改过的
.c文件,得到新的.o文件)
书写 Makefile
- 特点:Makefile 的语法要求非常严格,写好之后使用
make命令即可构建整个项目。

- 自动编译:

- 增量编译:

Makefile 的工作原理
- Makefile 的工作原理

伪目标
- 伪目标的代码书写格式:

- 所对应的有向无环图:

通用 Makefile 文件
- 通用 Makefile 文件的代码如下:
1 | |
库文件
- 什么是库文件:

- 静态库:

- 动态库:

- 生成静态库:

- 生成动态库:

Linux 基础学习
http://example.com/2025/05/14/linux_learning/