# Linux_test
**Repository Path**: chaomei/linux_test
## Basic Information
- **Project Name**: Linux_test
- **Description**: 学习Linux的笔记
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-23
- **Last Updated**: 2025-12-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Linux
## Linux操作系统
由三个重要的部分组成:内核、Shell、文件系统。
1.1 Kernel 管理硬件设备、内存分配、进程调度、交互空间、精灵程序、文件系统、系统 程序等。
1.2 Shell Shell是用户和Kernel之间的桥梁,它是一个命令解释器,当用户在Linux终端发 出一个指令,指令传递给Shell,其根据 指令名找到对应的应用程序去执行,应 用程序内部会调用内核对外提供的接口(方法),最终通过内核完成功能
> 注意:普通用户提示符为$,root用户提示符为#
>
> ''$ user'
>
> '# root'
## 目录结构

Ubuntu目录具体描述:
```linux
/:Linux文件系统根目录
/bin:存放基本命令和可执行文件,如 ls, cp , mv 等
/boot:包含启动 Linux 所需的文件,包括内核镜像和引导加载程序配置
/dev:设备文件存放于此,表示硬件设备,如硬盘、打印机等
/etc:系统配置文件的位置,如网络设置、服务配置等
/home:普通用户的主目录,每个用户都有一个自己的子目录,如 /home/user
/lib:共享库文件存放位置,供各种程序调用
/media 和 /mnt:用于挂载外部存储设备,如 USB 驱动器、CD-ROM 等
/opt:第三方软件包通常安装在此目录下
/proc 和 /sys:虚拟文件系统,提供关于进程和系统状态的信息
/root:超级用户(root 用户)的主目录
/sbin:存放系统管理员使用的命令和脚本,如 ifconfig,shutdown 等
/tmp:临时文件存放处,重启后可能会被清空
/usr:用户程序及相关文件的存放位置,如应用程序、文档、源代码等
/var:变量数据存放地,如日志文件、邮件队列、数据库等
```
> 注意:不同的Linux系统或者不同版本的系统,文件系统目录结构可能会有小区别
## 路径
**绝对路径(Absolute Path):**
1. 从根目录 / 开始,指向文件系统中的特定文件或目录
2. 每个绝对路径都以斜杠 / 开头,表示这是从文件系统的最顶层开始的路径
例: /home/briup/myDir/file.txt 是一个绝对路径,它明确地指出了 文件 f ile.txt 位于 /home/briup/myDir/ 目录下
**相对路径(Relative Path):**
1. 不以斜杠/开头
2. 不从根目录开始,其相对于当前工作目录的位
例:如果当前工作目录是 /home/briup ,那么 myDir/file.txt 就是一 个相对路径,它指向的是 /home/briup/myDir/file.txt 文件
**特殊路径:**
`.` : 当前工作目录下(一般会省略)
`..` : 上一级目录
`/` : 根目录
`~` : 当前用户的家目录
> 注意事项:
>
> - 一个路径可以表示唯一的一个目录或文件
> - 凡是路径信息以 . 或 .. 开头的均为相对路径
> - 路径中的第一个位置出现的/,代表根目录,例如 /home/briup/hello.txt
> - / 可以作为多级路径的分割符使用,例如 5 基础命令 test/a/b/hello.txt
## 命令构成
命令 [-选项] [参数]
> command [-options] [arguments]
- command : 命令主体
- [-options] : 命令选项(可选),借助它可以显示更加丰富的数据
- [arguments] : 命令参数(可选),命令操作的对象,文件、目录、用户和进程 等,都可以作为参数使用
-
> 注意事项:
>
> - 大小写敏感
> - 命令、选项和参数中间,要用空格隔开
> - 单行命令一般不超过256个字符
## 配置文件
1. `/etc/passwd`
**用途:**此文件包含了系统中所有用户的基本信息
**内容:**字段由冒号分隔,包括用户名、用户 ID(UID)、组 ID(GID)、用户描述、家目录路径和默认 shell
2. `/etc/shadow`
**用途:**存储用户的密码哈希值以及与密码策略有关的信息,如密码过期时间等
**格式:**每行对应一个用户,以冒号分隔,包含用户名称、密码哈希、上次更改 密码的时间戳、最小和最大密码年龄、警告期限等信息
**访问控制:**只有 root 用户对该文件有读取权限,以保护敏感数据
3. `/etc/group`
**用途:**定义了系统中的用户组信息,列出了每个组的成员
**格式:**每行表示一个组,字段由冒号分隔,依次为组名、密码占位符、GID 和 组成员列表(多个成员用逗号分隔)
4. `/etc/gshadow`
**用途:**该文件用于存放组密码,但组密码通常为空或不存在。
**注意:**管理员才有访问权限!
## 基础命令
1. echo:相当于打印输出(system.out.println)
2. clear :清屏
3. pwd:显示当前工作目录的完整路径
4. ls:列出目录中的文件和子目录内容
```
文件类型共7种,分别为:- 普通文件
d 目录文件
l 符号链接文件
b 块设备文件
c 字符设备文件
类似于windows快捷方式
如:/dev/sda 磁盘
如:/dev/video0 摄像头
b、c两种类型区别为:当文件进行IO操作时,操作单位不同(c以字符、b
以磁盘块为单位)
p 管道文件
用于不同进程间数据交互 mkfifo s.pipe
s 套接字文件
一般用于网络通信
```
5. cd:切换目录
6. touch:新建文件
7. mkdir:新建目录
> 注意:创建子目录时,要保证父目录存在!
8. passwd:用于修改用户密码
> 密码要求(建议):
>
> - 长度必须为六到八个字符
> - 应至少包含两个字母字符和一个数字或特殊字符
> - 必须与登录ID不同
> - 必须与之前的密码至少相差三个字符
> - 如果想强制修改密码,可以使用root用户给用户设置密码即可
9. sudo:临时(当前命令)将自己的操作权限提升为 root 权限
10. su:切换到另一个用户账户
11. chmod:更改文件或目录权限的命令
案例:
案例:
## 文件操作
1. cp:
拷贝文件
```
# 若目标文件不存在,新建然后覆盖
cp [-i] 源文件 目标文件
# -i 表示提醒
# 将文件s复制到指定目录中,注意目标目录必须存在
cp [-i] 源文件(s) 目标目录
```
拷贝目录
```
# 复制源目录到目标目录中
cp -r 源目录 目标目录(存在)
# 拷贝源目录内容到目标目录
cp -r 源目录 目标目录(不存在)
# 将多个源(文件、目录)复制到目标目录,目标目录必须存在
cp -r 源文件(s) 源目录(s) 目标目录
```
2. mv:
移动或重命名
```linux
# 删除已经存在的目标文件,重命名源文件
mv [-i] 源文件 目标文件(存在)
# 重命名源文件
mv 源文件 目标文件(不存在)
# 将源文件移动到指定目录,目标目录必须存在
mv 源文件(s) 目标目录
# 将源目录整体移动到目标目录内,目标目录必须存在
mv 源目录(s) 目标目录
```
3. rm:
rm命令用于删除文件或非空目录,rmdir用于删除空白目录
```
# 删除多个文件,-i为提示
rm [-i] filename(s)
# rmdir只能用于删除空白目录
rmdir empty_dir(s)
# 删除非空目录: -r表示删除目录 -f表示强制删除
rm -r -f dir_name(s)
rm -rf dir_name(s)
注意:命令行删除文件或目录,不经过回收站,要慎重!
```
4. man:
使用man命令可以查看Linux提供的帮助手册。
## 归档压缩
1. **归档:**归档(Archiving)是指将多个文件和目录打包成一个单独的文件的过程。归档的主要目的是为了简化文件传输、备份或存储管理。归档可以包含原始文件结构和属性,并且通常会结合压缩以减少文件大小。
常用:
- 把指定文件和目录进行归档 `tar -cvf my.tar a.txt b.txt dir01`
- 解档文件到指定目录中 `tar -xvf my.tar -C dir02`
2. **压缩**:压缩用于减少文件大小以节省存储空间或加快文件传输速 度。gzip 是最常用的压缩工具之一,它使用 Lempel-Ziv 编码(LZ77)算法进 行快速压缩。
- 将归档好的文件进行压缩 `gzip my.tar`
- 与tar结合使用,归档后直接压缩
`rm my.tar.gz`
`tar -zcvf my.tar.gz a.txt b.txt dir01`
3. **解压:**
- 对gz文件进行解压,解压到当前目录 `gunzip my.tar.gz`
- 对 tar.gz 文件进行解压并解除归档 `tar -zxvf my.tar.gz -C dir03`
## 元字符
元字符(Metacharacters)是指那些具有特殊含义的字符,它们用于 shell 解释 器来执行特定操作,而不是作为普通文本处理。
1. **通配符**
2. **分隔符**
`;` 用于分隔在同一行上顺序执行的多个命令。当你在命令行中使用分号时,它 告诉shell按照从左到右的顺序依次执行每个命令,无论前一个命令是否成功。
3. **重定向**:重定向(Redirection)是一种强大的功能,它允许你改变命令的 输入、输出以及错误信息的流向。
> 文件描述符(File Descriptor,简称FD)是计算机科学中的一个术语,用于表 示指向文件或其他输入、输出资源的引用。在Linux和Unix系统中,文件描述符 是一个非负整数,它为每个打开的文件或I/O流提供了一个唯一的标识符。
>
> Linux或Unix操作系统启动时,会默认准备好几个文件描述符:
>
> 0 (stdin): 标准输入设备,默认通常是键盘
>
> 1 (stdout): 标准输出设备,默认通常是终端屏幕
>
> 2 (stderr): 标准错误输出设备,默认也是终端屏幕
- `>`:也可以写成 `1>`,覆盖写入文件, 它可以将命令的标准输出,重定向到一个文件中,如果文件已存在,内容会被覆盖。
- `>>`:追加写入文件,追加内容到文件末尾尾,不会覆盖已有内容。
- `<`:以可以写成`0<` 重定向0号标准输入设备(默认为键盘)为指定文件。
- `2>`:将标准错误重定向到一个文件。
4. **管道符**
`|` ,可以把第一个命令的结果,交给第二个命令作为参数进行操作
案例1:把当前日历通过打印机进行打印
`cal | lp`
> 注意:
>
> - lp命令需要安装成功,且打印机连接、配置好,该命令才能执行成功
> - wc 命令用于统计,-l 统计行,-w 统计单词个数,-c 统计字符个数。
## 查看内容
**cat:**单独使用,作用是从标准输入设备上获取内容,输出到标准输出设备!
**more:**more和cat类似,也是查看内容的命令,但more命令可以一点点显示内容,而 非一次全显示出来。
**head:**查看文件的开头部分,非常适合快速检查大文件的内容或监控日志文件的最新更新。`head [-n] filename`
- 不加-n选项,默认情况显示文件的前10行
- 加-n选项,显示指定行(head -3 /etc/passwd)
**tail:**tail 命令和 head 命令类似,其查看文件的结尾部分。
## vi编译器
vi 编辑器是 Unix 和 Linux 系统中非常经典且广泛使用的**文本编辑工具**。它是 一个功能强大、高度可配置的编辑器,特别适合用于**编写代码和配置文件**。**提供了丰 富的命令和快捷键**
### 三种模式
**命令模式(command Mode)**
- 这是启动 vi 后默认进入的模式
- 在此模式下,**键盘输入会被解释为命令**,而不是插入到文件中
- 例如,按 `x` 键会删除光标下的字符;按 `:` 可以进入行命令模式执行更多 命令
**插入模式(Insert Mode)**
- 按 `i`、`a` 或 `o` 等键可以从命令模式切换到插入模式
- 在插入模式下,所有按键都会作为文本插入到当前光标位置或其周围
- 要退出插入模式返回命令模式,按 `Esc` 键
**行命令模式(Last Line Mode / Ex Mode)**
- 通过在命令模式下按 `:` 进入
- 此模式允许你执行一些特定类型的命令,如保存文件、搜索字符串、替换 文本等
- 命令需要以回车键确认执行
**三种模式转换关系图:**
### 命令模式
1. **切换到插入模式**
2. **删除命令**
3. **替换命令**
4. **拷贝命令**
### 最底行模式
**存盘及退出:**
### 补充命令
### 其他命令
****