wiki/运维/操作系统/Linux/笔记/8.文件管理.md
2025-01-02 10:46:09 +08:00

202 lines
6.4 KiB
Markdown
Raw 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.

**每打开一个文件都会消耗一个fd文件描述符**
## 1、Linux目录
简介Linux目录结构是一个单根倒置的树结构文件系统从根目录开始用"/"表示文件名最长255字节包括路径在内文件名称最长4095字节。
##### 1.1 绝对路径和相对路径
绝对路径你家通过卫星定位是xx东经xx北纬体现在linux上就是开头是根目录
相对路径你家在小明家旁边对应linux 就是当前目录的哪里
##### 1.2 文件目录大全
- /:根目录
- /boot引导文件、内核文件vmlinuz、引导加载grup都存放此目录中
- /bin所有用户使用的基本命令必须存放到系统盘下OS启动的时候会用到的程序
- /sbin管理类的基本命令OS启动时会用到里面的命令
- /lib启动时程序依赖的基本共享库文件以及内核模块文件/lib/modules
- /lib64专用于x86_64系统上的辅助共享库文件存放位置
- /etc配置文件目录
- /home/USERNAME普通用户家目录
- /root管理员家目录
- /media便携式移动设备挂载点
- /mnt临时文件系统挂载点
- /dev设备文件及特殊文件存储位置
- /opt第三方应用程序的安装位置
- /srv系统上运行的服务用到的数据
- /tmp临时文件存储位置
- /usruniversal sharedread-only data 通用的共享的只读数据
- /usr/bin保证系统拥有完整功能提供的应用程序
- /usr/lib库文件
- /usr/includeC程序的头文件
- /usr/share结构化独立的数据
- /usr/share/local第三方程序的安装目录
- /varvariable data file变化数据
- /var/cache应用程序缓存的数据目录
- /var/lib应用程序状态信息数据
- /var/local专用于为/usr/local下的应用程序存放可变数据
- /var/lock锁文件
- /var/log日志文件
- /var/run存放运行中的进程相关数据常用于存储进程的PID文件
- /var/spool应用程序数据池
- /var/tmp存放系统两次重启之间产生的临时数据
- /proc内核与进程信息相关
- /selinuxselinux相关的安全策略等信息的存储位置
## 2、目录常用操作命令
##### 2.1 显示当前工作目录
pwd
```shell
root@lzc:~# pwd
/root
pwd是使用PWD环境变量获取当前目录路径
```
##### 2.2 切换到其他目录
cd
- -上一次所在的目录cd使用OLDPWD变量获取上一次目录路径
- ..:父目录
- .:当前目录
- -P跳转到链接至的目录
- -S从大到小排序
##### 2.3 列出目录内容
ls
- -a包含隐藏文件
- -l显示大小权限等信息
- -R目录递归
- -X按文件后缀排序
##### 2.4 显示目录树
tree
- -d只显示目录
- -L指定显示的层级数目
##### 2.5 创建目录
mkdir
- -p递归创建
- -m创建时直接指定权限
##### 2.6 删除目录
rmdir
- -p递归删除
## 3、Linux文件
##### 3.1 文件类型
- -:普通文件
- d目录文件
- l符号链接文件
- b块设备
- c字符设备
- p管道文件
- s套接字文件
##### 3.2 文件数据
metadata源数据属性信息比如文件的大小相关时间类型此类数据是存放在inode表中
inodeindex node保存的信息如下
- inode number节点号
- 文件类型
- 权限
- UID
- GID
- 链接数
- 指向磁盘上文件的数据块指针
**相关命令和inode的关系**
当执行cp时底层发生以下变化分配一个空闲的inode号在inode表中生成新条目在目标目录中创建一个目录项将新文件名称与inode编号关联拷贝数据生成新的文件
当执行rm 时,底层发生以下变化
释放对应文件占用的inode号把数据块放到空闲列表中删除目录项
目录是一个特殊的文件目录文件保存了此目录中的文件列表以及inode number对应关系一个目录是目录下文件名和文件inode号之间的映射
##### 3.3 文件颜色
- 蓝色:目录
- 绿色:可执行文件
- 红色:压缩文件
- 浅蓝色:链接文件
- 灰色:其他文件
##### 3.4 文件状态
stat命令
```shell
root@lzc:~# stat 1.txt
File: 1.txt
Size: 210 Blocks: 8 IO Block: 4096 regular file
Device: fc02h/64514d Inode: 556125 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-12-05 23:55:07.813678618 +0800 #访问时间atime读取文件内容时会更新
Modify: 2023-12-05 23:55:07.005686767 +0800 #修改时间mtine改变文件内容时会更新
Change: 2023-12-05 23:55:07.005686767 +0800 #改变时间ctime元数据发生改变时更新例如权限、所有者、大小等改变才会更新仅更新文件内容此值不会更新
Birth: 2023-12-04 23:44:39.861025975 +0800
```
##### 3.5 文件通配符
- *匹配0个或多个字符但不匹配.开头的文件 ,即不匹配隐藏文件
- ?:匹配任何单个字符,一个汉字也算一个字符
- ~:当前用户家目录
- [0-9]:匹配单个数字范围
- [a-z]:匹配一个小写字母
- [A-Z]:匹配一个大写字母
- [zhengchi]:匹配列表中任何一个字符
- [^zhengchi]:匹配列表中所有字符以外的字符
- ~-:前一个工作目录
- [:digit:]:任意数字
- [:lower:]:任意小写字母
- [:upper:]:任意大写字母
##### 3.6 创建文件
touch
-a仅改变atime和ctime
-m仅改变mtime和ctime
##### 3.7 复制文件和目录
cp
- -i如果目标已经存在覆盖前提示是否覆盖
- -n不覆盖
- -rR递归复制目录及内部所有内容
- -a递归复制且复制权限
- cp -b目标存在的话覆盖前先备份源文件名结尾会被加上~只保留最近一个备份
##### 3.8 移动和重命名文件
mv
-b目标存在覆盖前先备份备份文件以~结尾
rename
rename '原名字' '目标名字' 文件
##### 3.9 删除文件
rm
- -i交互式
- -f强制删除
- -r递归
##### 3.10 链接文件
ln
**硬链接**
简介硬链接就是新建一个文件和源文件数据绑定当源文件被删除时文件独立否则数据持续同步无法对目录创建硬链接硬链接inode号相同
**软连接**
简介类似于windows 的快捷方式,源文件被删除,软链接文件也去殉情
-s
# 注意:当软件链接目录时,要注意删除命令
rm -rf /data# 只删除/data这个软连接
rm -rf /data/ # 删除软连接下所有文件
#####