diff --git a/文件管理.md b/文件管理.md new file mode 100644 index 0000000..2e00b9a --- /dev/null +++ b/文件管理.md @@ -0,0 +1,375 @@ +

文件管理

+ +------ + +## 一: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.jpg,video.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 +``` \ No newline at end of file