文件系统
- 核心:万物皆文件
文件目录
文件权限
属性:文件类型 + 文件权限 + 链接数 + 文件所属用户 + 文件所属组 + 文件大小 + 文件修改日期 + 文件名
文件类型:
- 常规文件:[采用 [-] 表示]{.red}(文本文件、二进制文件、数据文件)
- 文件目录:[采用 [d] 表示]{.red}
- 链接文件:[采用 [l] 表示]{.red}(软链接文件)
- 设备文件:[块设备文件采用 [b] 表示]{.red}(磁盘);[字符设备文件采用 [c] 表示]{.red}(鼠标、键盘)
- Sockets 文件:[采用 [s] 表示]{.red}(用于网络中客户端与服务器的通信的文件)
- FIFO 文件(pipe 文件):[采用 [p] 表示]{.red}(主要目的用于解决多个进程同时读写一个文件造成的错误问题)
文件权限:[文件所属用户权限 + 文件所属组权限 + 其他用户组权限]{.red}
注:系统管理员可以 [无视任何权限]{.red} 使用文件
链接数
- inode 结点:保存文件存放的实际数据
- 链接:每个文件名实际相当于指针,链接到 inode 结点
- 链接数:多个不同的文件名可以同时链接到相同的 inode 结点( [链接分为软链接和硬链接]{.red})
文件所属用户:文件 ++当前++ 归属的用户
[注:文件当前归属的用户不一定就是文件的创建者]{.red},可以通过修改拥有者方式改变
文件所属组:文件 ++当前++ 归属的用户组
[注:文件当前归属的用户组不一定就是文件拥有者所在的组]{.red},可以通过修改用户组的方式改变
文件大小:文件当前大小,采用 ++字节(B)++作为单位
文件修改日期:文件最近 ++被修改++ 的日期而不是访问日期
文件名:文件名前存在 [ . ] 代表该文件为隐藏文件
细节:
- 文件扩展名:[Linux 扩展名没有实际的作用,仅仅起提示该文件内容的功能]{.red};文件如何被执行取决于 [文件的内容和文件是否可被执行]{.red},和扩展名没有关系
- 目录属性:文件属性和目录属性基本一致,除了权限的含义有所区别之外
权限
文件
基本权限:[① 可读权限:采用 [r] 表示 / 采用数字 4 表示 ② 可修改权限:采用 [w] 表示 / 采用数字 2 表示 ③ 可执行权限:采用 [x] 表示 / 采用数字 1 表示]{.red}
可修改权限:用户可以修改、新增文件的内容,但是 [不可以删除文件]{.red}
文件权限在展示的时候采用字符的形式表示,修改文件权限的时候使用数字进行修改比较方便;每个用户级别都具有这三种权限
问题:为什么要将三种权限采用 4、2、1 三种数字设计而不是其他的数字?(想想就行)
默认权限:[默认权限 = 系统默认权限 - umask]{.red}
系统默认权限:默认文件权限为 [666(-rw-rw-rw)]{.red},默认目录权限为 [777(drwxrwxrwx)]{.red}
命令:[umask 值是系统默认权限需要减去的值]{.red}
[umask [-S]]{.green}:查看需要减去权限值
# 采用数字表示的权限值:0022
[root@localhost ~]:umask
# 采用字符表示的权限值:u=rwx, g=rx, o=rx
[root@localhost ~]:umask -S[umask 权限值]{.green}:修改默认减去的权限值
[root@localhost ~]:umask 002
细节:
- 命令 umask 得到的权限值为 4 位,第一位是特殊权限用的,仅看后面三位即可
- [系统管理员默认的 umask 值为 022,普通用户默认的 umask 值为 002]{.red}
特殊权限:① SUID ② SGID ③ SBIT([前两者采用 [s] 表示,后者采用 [t] 表示]{.red})
命令:[修改文件归属的命令仅能够由系统管理员执行]{.red}
[chown [-R] 用户名 文件名/目录名]{.green}:修改文件所属用户
# -R 可以递归修改目录中的所有子文件权限
[root@localhost ~]:chown username filename/directoryname[chgrp [-R] 用户名 文件名/目录名]{.green}:修改文件所属用户组
# -R 可以递归修改目录中的所有子文件权限
[root@localhost ~]:chgrp groupname filename/directorynam[chmod [-R] 权限值 文件名/目录名]{.green}:修改文件的权限([每个用户仅可以修改属于自己的文件的权限]{.red})
# -R 可以递归修改目录中的所有子文件权限
# x:表示用户的权限值,y:表示用户组的权限值,z:表示其他用户组的权限值
[root@localhost ~]:chmod xyz filename/directoryname
# 表示文件拥有者具有所有权限、表示文件所属组具有所有权限、表示其他组仅具有读和执行的权限
[root@localhost ~]:chmod 775 filename/directoryname
目录
前提:目录权限的含义和文件的有部分不同,其余命令相关的内容完全一致
可读权限:
定义:[用户仅可以查看目录中的所有文件名]{.red}
细节:[用户仅具有可读权限 不代表可以进入该目录]{.red}
# 可以使用 ls 命令查看目录中的文件;不能使用 cd 进入该目录
# 仅能够查看文件名,不能够查看详细信息
[root@localhost ~]:ls directoryname
# 权限不足
[root@localhost ~]:cd directoryname
可修改权限:
- 定义:[用户可以在目录中新增文件、删除文件、移动文件等一系列操作]{.red}
- 细节:仅具有可修改权限也是不可以进入该目录的
可“执行”权限(可进入权限)
- 定义:[用户可以进入该目录进行工作]{.red}
- 细节:仅具有可进入的权限是可以进入目录的,但是 [TAB] 键不会自动补全目录名
文件管理
文件压缩
- 前提:[压缩和打包是两种完全不同的技术]{.red}
- 压缩:不同于 Windows 下的压缩技术可以同时针对多个文件进行压缩,Linux 的压缩技术仅能够 [针对单个文件进行压缩]{.red} 不可以对目录压缩
- 打包:因为 Linux 压缩技术的局限性,所以发明打包技术,可以将 [多个文件打包在一起形成单个文件]{.red},然后对该文件进行压缩
压缩
原理:
- 字符转换成字节进行存储的时候可能存在大量无法提供信息的 0
- 压缩技术则是将这些没有被使用的空间丢弃,从而减小文件大小
扩展名:*.Z( compress 压缩程序)、.zip( zip 压缩程序)、.gz( gzip 压缩程序)、.bz2 ( bzip2 压缩程序)、.xz ( xz 压缩程序)
注:压缩文件扩展名通常用于提示该文件是采用哪种命令压缩的,方便对应解压
命令
compress 程序压缩:
已经基本被废弃不会使用zip 程序压缩:[zip [-r] 压缩文件名 文件]{.green}(不常使用)
注:[zip 程序可以采用选项 [-r] 递归压缩文件,即压缩目录]{.red}
[root@localhost ~]:zip filename
[root@localhost ~]:zip -d directoryname
# 解压文件
[root@localhost ~]:unzip zipnamegzip 压缩程序:[gzip [-dv] 文件]{.green}
[gzip 文件]{.green}:没有任何选项就是默认压缩文件
(1) [gzip 默认建立压缩文件名称不需要手动指定]{.red}
(2) 压缩不会保留原始文件
[root@localhost ~]:gzip filename
[gzip -d 压缩文件名 文件]{.green}:没有任何选项就是默认压缩文件
(1) gzip 可以解压 compress、zip 程序压缩的文件
(2) gzip 可以通过添加选项解压文件,也可以直接使用命令 gunzip 解压文件
# gzip -d 解压文件
[root@localhost ~]:gzip -d zipname
# gunzip 解压文件
[root@localhost ~]:gunzip zipname[gzip -v 压缩文件名 文件]{.green}:压缩或者解压时显示详细信息
[root@localhost ~]:gzip -v/-dv filename/zipname
其余命令
# 将压缩文件中的内容输出到终端
[root@localhost ~]:zcat zipname
# 其余形式的输出
[root@localhost ~]:zmore/zless/zgrep zipnamebzip2 压缩程序:[bzip2 [-dvkzv] 文件]{.green}
[bzip2 -z 文件]{.green}:压缩文件,没有任何选项默认也是压缩文件
# 不添加 -z 选项也是压缩文件
[root@localhost ~]:bzip2 -z filename[bzip2 -k 文件]{.green}:压缩的时候保留原始文件
[root@localhost ~]:bzip2 -zk filename
其余选项和命令 gzip 完全一致
xz 压缩程序:[xz [-dlvkv] 文件]{.green}
[xz -l 压缩文件]{.green}:列出压缩文件中的所有文件名称
[root@localhost ~]:xz -l zipname
其余命令和选项和 gzip、bzip2 一致
打包
# 进行打包 |