第三章 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 显示链接路径(默认)

绝对路径和相对路径

  • 绝对路径
    • 以正斜杠(/)开始
    • 完整的文件的路径位置
    • 可用于任何想指定一个文件名的时候
  • 相对路径
    • 不以斜线开始
    • 指定相对于当前工作目录或某目录的位置
    • 可以作为一个简短的形式指定一个文件名
  • 基名: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中内容填充至新文件

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 显示命令在线帮助
发布了47 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42428264/article/details/104286527