linux/文件管理.md
2025-03-17 17:25:07 +08:00

375 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h2><center>文件管理</center></h2>
------
## 一Linux 目录结构
```bash
[root@wxin /]# tree -L 1
.
├── bin -> usr/bin // 存放系统启动和修复所需的基础命令
├── boot // 存放系统启动所需的文件
├── dev // 设备文件目录,所有硬件和虚拟设备均以文件形式存在
├── etc // 存放系统全局配置文件
├── home // 普通用户的家目录
├── lib -> usr/lib // 存放系统库文件
├── lib64 -> usr/lib64 // 存放系统库文件
├── media // 自动挂载可移动设备如光盘、USB 驱动器)
├── mnt // 临时挂载外部存储设备(如 U 盘、网络存储)
├── opt // 存放第三方商业软件(如 Oracle、大型闭源程序
├── proc // 虚拟文件系统,实时反映内核和进程状态。
├── root // 系统管理员root的家目录存放管理员个人文件。
├── run // 存放运行时的临时数据(如 PID 文件、套接字文件),重启后丢失
├── sbin -> usr/sbin // 存放系统管理员专用的命令
├── srv // 存放服务数据
├── sys // 虚拟文件系统,用于与内核交互(如调整硬件参数)
├── tmp // 存放临时文件,所有用户可读写(系统重启后自动清理)
├── usr // 存放用户程序和数据
└── var // 存放动态变化的数据(日志、缓存、数据库等)
```
## 二:文件管理
### 1. 创建文件
**语法**
```shell
touch 文件名
```
**示例**
```bash
[root@wxin ~]# touch /test/group
[root@wxin ~]# ll /test/group
-rw-r--r--. 1 root root 0 3月 17 17:10 /test/group
```
### 2. 创建目录
**语法**
```bash
mkdir 目录名
mkdir -p 目录名
```
**示例**
```bash
[root@wxin ~]# mkdir /test
[root@wxin ~]# ls /test
group
```
### 3. 复制
**语法**
```shell
cp 源文件路径 目标文件路径
cp -r 源文件路径 目标文件路径
```
**示例**
```bash
[root@wxin ~]# cp /etc/passwd ./passwd.txt
```
### 4. 移动与重命名
**语法**
```shell
移动
mv 源文件 目标文件目录路径
重命名
mv 旧文件名 新文件名
```
**示例**
```bash
[root@wxin ~]# mv passwd.txt /tmp/
[root@wxin ~]# mv /tmp/passwd.txt /tmp/passwd
```
### 5. 删除
**语法**
```shell
rm -rf 文件或目录的路径
```
**示例**
```bash
[root@wxin ~]# rm -rf /tmp/test.txt
```
### 6. 查看文件内容
**语法**
```shell
cat 文件名 # 查看全部
more 文件名 # 翻页,动态查看
head 文件名 # 查看头部
tail 文件名 # 查看尾部
grep 关键字 文件名 # 过滤关键字
```
**示例**
```bash
[root@wxin ~]# cat /etc/passwd
[root@wxin ~]# more /etc/passwd
[root@wxin ~]# head /etc/passwd
[root@wxin ~]# head -n /etc/passwd # n代表某个数字
[root@wxin ~]# tail /etc/passwd
[root@wxin ~]# tail -n /etc/passwd # n代表某个数字
[root@wxin ~]# grep wxin /etc/passwd
```
### 7. 修改文件
**语法**
```shell
vi 文件 # 命令行模式
vim 文件名 # 图形模式
```
**模式切换**
| 快捷键 | 作用 |
| :-----------: | :------------------------------: |
| i | 进入插入模式(光标前插入) |
| a | 进入插入模式(光标后插入) |
| o | 当前行下方插入新行并进入插入模式 |
| O | 当前行上方插入新行并进入插入模式 |
| Esc 或 Ctrl+[ | 返回普通模式 |
| v | 进入可视模式(字符选择) |
| V | 进入可视模式(行选择) |
| Ctrl+v | 进入可视块模式(矩形选择) |
| : | 进入命令行模式 |
**光标移动**
基础移动
| 快捷键 | 作用 |
| :------: | :---------------------: |
| h j k l | 左、下、上、右移动 |
| w / b | 向前/向后跳一个单词 |
| 0 / ^ | 跳至行首 / 行首非空字符 |
| $ | 跳至行尾 |
| gg | 跳至文件首行 |
| G | 跳至文件末行 |
| 5G 或 :5 | 跳至第 5 行 |
快速定位
| 快捷键 | 作用 |
| :-------------: | :---------------------------------------------: |
| Ctrl+f / Ctrl+b | 向前/向后翻页(类似 PageUp/Down |
| Ctrl+d / Ctrl+u | 向下/向上半页滚动 |
| f + 字符 | 跳转到当前行下一个指定字符如fa跳转到下一个a |
| % | 在配对的括号间跳转 |
**文本编辑**
删除与修改
| 快捷键 | 作用 |
| :------: | :----------------------------: |
| x | 删除当前字符 |
| dd | 删除当前行 |
| dw | 删除当前单词 |
| D | 删除至行尾 |
| cw | 删除当前单词并进入插入模式 |
| r + 字符 | 替换当前字符(如 ra 替换为 a |
| u | 撤销操作 |
| Ctrl + r | 重做操作 |
复制与粘贴
| 快捷键 | 作用 |
| :----: | :----------: |
| yy | 复制当前行 |
| yw | 复制当前单词 |
| p | 粘贴到光标后 |
| P | 粘贴到光标前 |
查找与替换
| 快捷键 | 作用 |
| :---------------: | :-----------------------------------------: |
| /keyword | 向前查找关键字(按 `n` 下一个,`N` 上一个) |
| ?keyword | 向后查找关键字 |
| :%s/old/new/g | 全局替换(所有行的 `old` 替换为 `new` |
| :s/old/new/g | 当前行替换 |
| :10,20s/old/new/g | 替换第 10 到 20 行的内容 |
**窗口与分屏**
| 快捷键 | 作用 |
| :---------------: | :----------------: |
| :sp 或 Ctrl+w s | 水平分屏split |
| :vsp 或 Ctrl+w v | 垂直分屏vsplit |
| Ctrl+h/j/k/l | 切换分屏窗口方向 |
| Ctrl+w w | 循环切换窗口 |
| Ctrl+w q | 关闭当前窗口 |
| Ctrl+w / Ctrl+w - | 增加/减少窗口高度 |
**标签页操作**
| 快捷键 | 作用 |
| :------------: | :----------------: |
| :tabnew | 新建标签页 |
| gt 或 :tabnext | 切换到下一个标签页 |
| gT 或 :tabprev | 切换到上一个标签页 |
| :tabclose | 关闭当前标签页 |
**保存与退出**
| 快捷键 | 作用 |
| :------------: | :------------: |
| :w | 保存文件 |
| :wq 或 ZZ | 保存并退出 |
| :q! | 强制退出不保存 |
| :w newfile.txt | 另存为新文件 |
### 8. 改变目录
语法:
```shell
cd 文件或目录路径
```
示例:
```bash
绝对路径切换
[root@wxin ~]# cd /etc/sysconfig/network-scripts/
[root@wxin network-scripts]#
相对路径切换
[root@wxin network-scripts]# cd ../modules/
[root@wxin modules]#
切换到上层目录
[root@wxin modules]# cd ../
[root@wxin sysconfig]#
切换到当前目录
[root@wxin sysconfig]# cd ./
[root@wxin sysconfig]#
```
## 三:文件类型
### 1. 文件类型标志
通过 `ls -l` 命令查看文件时,**首字符**表示文件类型:
```bash
[root@wxin ~]# ls -l /path/to/file
-rw-r--r-- 1 user group 4096 Sep 10 10:00 file.txt → 普通文件(首字符 `-`
drwxr-xr-x 2 user group 4096 Sep 10 10:00 dir/ → 目录(首字符 `d`
```
### 2. 常见文件类型及操作
#### 1. 普通文件(-
作用:存储数据(文本、二进制、压缩包等)。
示例:
- 文本文件file.txt
- 二进制可执行文件:/bin/ls
- 图片/视频image.jpgvideo.mp4
操作命令:
```bash
[root@wxin ~]# touch newfile.txt # 创建空文件
[root@wxin ~]# cat file.txt # 查看文件内容
[root@wxin ~]# file /bin/ls # 查看文件类型输出ELF 64-bit LSB executable...
```
#### 2. 目录d
作用:组织文件和其他目录。
操作命令:
```bash
[root@wxin ~]# mkdir mydir # 创建目录
[root@wxin ~]# rmdir empty_dir # 删除空目录
[root@wxin ~]# rm -r dir_with_files # 递归删除非空目录
```
#### 3. 符号链接l
作用:指向另一个文件/目录的快捷方式。
操作命令:
```bash
[root@wxin ~]# ln -s /path/original /path/link # 创建软链接
[root@wxin ~]# ls -l /path/link # 显示链接指向link -> original
[root@wxin ~]# readlink -f /path/link # 查看链接的真实路径
```
#### 4. 块设备文件b
作用表示块设备如硬盘、U盘按块读写数据。
操作命令:
```bash
[root@wxin ~]# ls -l /dev/sda # 显示块设备信息(首字符 `b`
[root@wxin ~]# fdisk -l /dev/sda # 查看硬盘分区
```
#### 5. 字符设备文件c
作用:表示字符设备(如终端、键盘),按字符流读写。
操作命令:
```bash
[root@wxin ~]# echo "test" > /dev/tty # 直接输出到当前终端
[root@wxin ~]# dd if=/dev/zero of=file bs=1M count=100 # 使用字符设备生成空文件
```
#### 6.套接字文件s
作用用于进程间通信如数据库服务、X Window 系统)。
操作命令:
```bash
[root@wxin ~]# ss -lnp | grep mysql # 查看套接字监听状态
[root@wxin ~]# nc -U /tmp/socket.sock # 通过 netcat 连接 Unix 套接字
```
#### 7.管道文件p
作用:实现单向进程间通信。
操作命令:
```bash
[root@wxin ~]# mkfifo mypipe # 创建命名管道
[root@wxin ~]# echo "data" > mypipe & # 写入管道(后台运行)
[root@wxin ~]# cat mypipe
```