第三章 Linxu文件系统及操作
文件系统结构元素
文件系统
- 文件和目录被组织成一个单根倒置树结构
- 文件系统从根目录下开始,用“/”表示
- 根文件系统(rootfs):root filesystem
- 文件名称区分大小写
- 以 . 开头的文件为隐藏文件
- 路径分割的 /
- 文件有两类数据:
- 元数据:metadata
- 数据:data
- 文件系统分层结构:LSB Linux Standard Base
- FHS(Filesystem Hierarchy Standard)
- http://www.pathname.com/fhs/
文件名规则
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 蓝色–>目录;绿色–>可执行文件;红色–>压缩文件;浅蓝色–>链接文件; 灰色–>其他文件
- 除了斜杠和NUL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
- 标准Linux文件系统(如ext4),文件名称大小写敏感
- 例如: MAIL, Mail, mail, mAil
Linux下的文件类型
-
-
普通文件 - d 目录文件
- b 块设备
- c 字符设备
- l 符号链接文件
- p 管道文件pipe
- s 套接字文件
CentOS 7目录变化
- /bin 和 /usr/bin
- /sbin 和 /usr/sbin
- /lib 和 /usr/lib
- /lib64 和 /usr/lib64
显示当前工作目录
- 每个shell和系统进程都有一个当前的工作目录
- CWD:current work directory
- 显示当前shell CWD的绝对路径
- pwd: printing working directory
- -P 显示真实物理路径
- -L 显示链接路径(默认)
- pwd: printing working directory
绝对路径和相对路径
- 绝对路径
- 以正斜杠(/)开始
- 完整的文件的路径位置
- 可用于任何想指定一个文件名的时候
- 相对路径
- 不以斜线开始
- 指定相对于当前工作目录或某目录的位置
- 可以作为一个简短的形式指定一个文件名
- 基名:basename /etc/sysconfig/network : network
- 目录名:dirname /etc/sysconfig/network : /etc/sysconfig
更改目录
- cd 改变目录
- 使用绝对或相对路径:
- cd /home/wang/
- cd home/wang
- 切换至父目录: cd …
- 切换至当前用户主目录: cd
- 切换至wang用户的主目录:cd ~wang
- 切换至刚离开的工作目录:cd -
- 使用绝对或相对路径:
- 选项: -P
- 相关的环境变量:
- PWD:当前目录路径
- OLDPWD:上一次目录路径
列出目录内容
-
列出当前目录的内容或指定目录
-
用法:ls [options] [files_or_dirs]
-
示例:
- ls -a 包含隐藏文件
- ls -l 显示额外的信息
- ls -R 目录递归
- ls -ld 目录和符号链接信息
- ls -l文件分行显示
- ls -S 按从大到小排序
- ls -t 按mtime排序
- ls -u配合-t选项,显示并按atime从新到旧排序
- ls -U 按目录存放顺序显示
- ls -X 按文件后缀排序
-
Linux文件有三个时间,一个是atime,ctime,mtime
-
查看文件的元数据 stat /etc/motd
(atime)Access: 2019-12-10 21:17:03.232812137 +0800
(mtime)Modify: 2019-12-10 21:17:03.232812137 +0800
(ctime)Change: 2019-12-10 21:17:03.232812137 +0800
文件通配符
-
*
匹配零个或多个字符 (不包含隐藏文件) - ? 匹配任何单个字符
- ~ 当前用户家目录
- ~mage 用户mage家目录
- ~+ 当前工作目录
- ~- 前一个工作目录
- [0-9] 匹配数字范围
- [a-z] 字母 顺序 a A b B c C… 从a开始
- [A-Z] 字母a A b B c C… 从A开始
- [wang] 匹配列表中的任何一个字符
- [^wang] 匹配列表中的所有字符以外的字符
- 预定义的字符类:man 7 glob(略)
创建和查看文件
创建空文件和刷新时间
- touch命令
- 格式:touch [option] … file …
- -a 仅改变atime和ctime
- -m仅改变mtime和ctime
- -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
- -c 如果文件不存在,不予创建
复制、转移和删除文件
复制文件和目录CP
- cp [OPTION]…[-T] SOURCE DEST
- cp [OPTION]… SOURCE DIRECTORY
- cp [OPTION]…-t DIRECTORY SOURCE…
- cp SRC DEST
- SRC是文件:
- 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
- 如果目标存在:
- 如果DEST是文件:将SRC中的内容覆盖至DEST中,基于安全,建议为cp命令使用-i选项
- 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件
- SRC是文件:
CP常用选项
- -i 覆盖前提示
- -n 不覆盖,注意两者顺序
- -r,-R 递归复制目录及内部的所有内容
- -a 归档,相当于-dR --preserc = all
- -d --no-dereference --preserv=links 不复制源文件,只复制链接名
- –preserv[=ATTR_LIST]
- mode:权限
- ownership:属主属组
- timestamp:
- links
- xattr
- context
- all
- -p等同于 --preserv=mode,ownership,timestamp
- -v --verbose 查看文件过程
- -f --force 强制,删除在创建
- -u --update 只复制源比目标更新文件或目标不存在的文件
- -b 目标存在,覆 盖前先备份,形式为filename~
- –backup=numberd目标存在,覆盖前先备份加数字后缀
移动和重命名文件
- mv [OPTION]… [-T] SOURCE DEST
- mv [OPTION]… SOURCE… DIRECTORY
- mv [OPTION]… -t DIRECTORY SOURCE…
- 常用选项:
- -i 交互式
- -f 强制
- -b 目标存在,覆盖前先备份
- 常用选项:
删除
- rm [OPTION]… FILE…
- 常用选项:
- -i 交互式
- -f 强制删除
- -r 递归
- –no-preserve-root 删除/
- 示例:rm -rf /*
目录操作
- tree 显示目录树
- -d:只显示目录
- -L level:指定显示的层级数目
- -P pattern:只显示由指定pattern匹配到的路径
- mkdir 创建目录
- -p:存在于不报错,且可自动创建所需的各目录
- -v:显示详细信息
- -m MODE:创建目录时直接指定权限
- rmdir 删除空目录:
- -p:递归删除父空目录
- -v:显示详细信息
- rm -r 递归删除目录树
-
>
: 文件不存在,则创建文件,存在,将文件清零。(释放资源正确方式:> filename,然后在 rm filename)
索引节点
- inode(index node)表中包含文件系统所有文件列表+
- 使用 ll -i查看文件节点编号
- 一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:
- 文件类型,权限,UID,GID
- 链接数(指向这个文件名路径名称个数)
- 该文件的大小和不同的时间戳
- 指向磁盘上文件的数据块指针
- 有关文件的其他数据
cp 和inode
- 在CP的命令:
- 分配一个空闲的inode号,在inode表中生成新条目
- 在目录中创建一个目录项,将名称与inode编号关联
- 拷贝数据生成新的文件
rm和inode
- rm命令:
- 链接数递减,从而释放的inode号可以被重用
- 吧数据块放在空闲列表中
- 删除目录项
- 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
软和硬链接
硬链接 link
- 不能跨分区、不能跨设备、不能针对文件夹创建硬链接
- 创建硬链接后,文件链接数加1
- 本质上是同一个文件
- 删除一个文件,不影响另一个文件
符号链接(软连接)
- ln -s f1 f1.linx
- 文件链接数不变
- 相当于Windows 快捷方式
- 删除文件后,原始文件名不存在,链接文件出错,只要原始文件名存在就不会报错。
- 链接文件大小取决于原始文件的路径大小
- 创建软连接时,使用相对路径写原始文件路径时,要写相对于软链接工作空间的路径
- 删除软连接时,如果加上 / ,会把原始文件目录下的问价你删除了
- 例:
硬链接和软连接区别
- 本质:
- 硬链接:同一个文件,多个名字
- 软链接:不同文件
- 跨分区:
- 硬链接不支持
- 软连接支持
- 目录:
- 硬链接不知对目录创建
- 软连接支持
- 相互关系:
- 硬链接中原始文件和硬链接文件相互独立,没有依赖关系
- 软连接:原始文件和软链接由依赖关系
- inode号:
- 原始文件与硬链接inode号相同
- 原始文件与软链接inode号不同
- 链接数:
- 创建一个硬链接,硬链接数加1
- 软连接,没有
- 路径:
- 软连接的原始文件的相当于软连接的工作目录的相对路径
- 文件类型不同
- 软连接:使用ln -s 创建
确定文件内容
- 文件可以包含多种类型的数据
- 检查文件的类型,然后确定适当的打开命令或应用程序使用
- file [options]
<filename>
… - 常用选项:
- -b 列出文件辨识结果时,不显示文件名称
- -f filelist 列出文件filelist中文件名的文件类型
- -F 使用指定分隔符号替换输出文件名后默认的“:”分隔符
- -L 查看对应软连接对应文件的文件类型
- –help 显示命令在线帮助