Skip to content

文件系统操作

文件系统

概述

linux下一切皆文件,linux文件系统是linux操作系统中用于管理和存储文件及目录的一套机制

文件系统的功能组成

文件系统可以拆分为

  • 文件系统--侧重于理论体系的梳理
    • 操作系统用于组织和存储文件及数据的方法和数据结构,定义了属于如何在存储设备上被组织、命名、访问和修改。
    • 主要功能
      • 组织和分配存储空间
      • 文件存储和检索
      • 安全性和权限管理
      • 错误恢复和日志恢复
  • 文件管理系统--侧重于各种文件的操作实践
    • 为操作系统中与文件管理相关的所有功能和工具的合集
    • 主要功能
      • 文件系统的创建和管理
      • 文件访问和修改
      • 权限和安全管理
      • 磁盘和分区管理

目录结构

参考链接:https://www.pathname.com/fhs/

文件路径

  • /:一级目录,根文件系统,rootfs
  • 绝对路径:以/开始,是一个完整的文件的位置路径
  • 相对路径:不以/开始,是指相对于当前工作目录的路径

用户目录

  • /home:普通用户的主目录,在linux中每个用户都有一个自己的目录,一般以用户的账号名命名
  • /root:为系统管理的主目录,又称超级管理员

系统相关目录

  • /boot:存放启动linux时使用的一些核心目录,包括一些连接文件以及镜像文件
  • /etc:存放所有的系统管理员说需要的配置文件和子目录
  • /lib:存放系统最基本的动态连接共享库,应用启动都需要用到这些共享库
  • /sys:存放着sysfs文件系统,是内核设备树的一个直观反应,集成了三种文件系统的信息
    • 针对进程信息的 proc文件系统
    • 针对设备的devfs文件系统
    • 针对伪终端的devpts文件系统

命令相关目录

  • /bin:是Binaries的缩写,存放经常使用的命名
  • /sbin:是Superuser Binaries的缩写,存放的是系统管理员使用的系统管理程序
  • /usr/bin:系统用户使用的应用程序
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序 Rocky系统,从centos7开始,属于一个目录,通过链接进行关联,而Ubuntu还说两个独立的目录

程序相关目录

  • /proc:是Processes的缩写,是一种未文件系统即虚拟文件系统,存储当前内核运行状态的一系统特殊文件,是一个虚拟的目录,是系统内存的映射,可直接访问这个目录获取系统信息
  • /srv:存放一些服务启动之后需要提取的数据
  • /usr:是unix shred resources即共享资源,是一个非常重要的目录,用户很多的应用程序和文件都放在这个目录下,类似win下的program files
  • /usr/src:内核源代码默认的目录
  • /var:是variable的缩写,存放不断扩充着的东西,主要用于那些经常被修改的场景
  • /run:一个临时文件系统,存储系统启动以来的信息,当重启的时候,这个目录下的文件被删掉或清除
    • 如果系统上有/var/run应该指向/run
  • /usr/share:应用程序软件的帮助信息文件所在的目录

设备相关目录

  • /dev:存放的外部设备信息
  • /media:系统自动设备的一些设备的挂载目录
  • /mnt:让用户临时挂载别的文件系统的目录
  • /misc/cd:没有挂载光盘,也可以直接进入光盘里面
    • 前提是autofs服务上启动的,没有则需要安装并启用

其他相关目录

  • /lost+found:一般情况下为空,系统会非法关机之后,就有文件
  • /opt:给主机额外安全软件所摆放的目录
  • /selinux:是Redhat/centos所特有的安全机制目录
  • /tmp:存放临时文件的目录

文件类型

文件标识

文件类型以及颜色标识是用户与系统交互时的重要元素,能快速帮用户识别和理解文件或目录的性质 文件有两部分组成:文件内容数据和文件属性数据(也叫元数据)

文件类型分类

  • 普通文件:文本、数据、程序代码等
  • 目录文件:存储其他文件的路径名和相关信息
  • 链接文件:分为软链接和硬链接
    • 硬链接:指向文件的inode节点,允许多个文件名与一个文件关联
    • 软链接:是一个特殊的文件,指向另一个文件或目录的路径,可以跨文件系统
  • 特殊文件:分为块设备文件和字符设备文件
  • 可执行文件:包含程序代码的文件
  • 其他文件:如管道文件,套接字文件等其他类型的文件

链接文件

硬链接

  • 简介:通过文件系统的inode链接来产生新文件名的方式,而不是叉棍酱行文件,多个文件名可以指向同一个inode号,共享相同的文件数据
  • 特点:不会增加inode数量,也不会消耗额外的磁盘空间,删除任何一个硬链接文件名,只要其他的存在,文件数据就不会被删除
  • 限制:不能跨文件系统创建,也不能直接链接到目录
  • 用途:提供了一种在不同位置访问同一文件数据的方式,而不需要复制文件内容

软链接(符号链接)

  • 简介:是一个独立的文件,包含另一个文件的路径名,当访问软链接时,系统会根据链接中的路径名找到并访问实际的文件
  • 特点:软链接的通常很小,只包含路径名,删除软链接不会影响它所指向的文件,如果删除了所指向的文件,就会失效,可以跨文件系统创建,也可以链接到目录
  • 断链:软链接指向了不存在的文件或目录
  • 用途:用于简化复杂的目录结构,或在多个位置引用同一文件时提供便利

场景定位

  • 硬链接:数据备份与恢复、节省磁盘空间、数据一致性
  • 软链接:跨文件系统引用、模拟文件位置、简化复杂路径

指令

  • 创建硬链接:ln 源文件 目标文件
  • 创建软链接:ln -s 源文件 目标文件
  • 查看链接指向:`readlink 链接文件

IO实践

重定向

  • 覆盖式重定向:
    • >:将符号左侧的内容,以覆盖式的方式输入右侧文件中
    • <:将符号右侧的内容,以覆盖式的方式输入左侧文件或命令中
  • 追加式重定向:
    • >>:将符号左侧的内容,以追加式的方式输入到右侧文件的末尾行中
    • <<:将符号右侧的内容,以追加式的方式输入到左侧文件的末尾行中

管道符

  • |:常用于将两个命令隔开,然后从左向右传递信息

后台执行

  • &:将一个命令从前台转到后台执行
    • 格式:命令 &

EOF重定向

shell中,EOF通常于<<结合使用,<<EOF表示后续的输入作为子命令或子shell的输入,直到遇到EOF,再次返回到主调用shell,可理解为分界符,EOF也是一种自定义和文件内容终止符 格式:

bash
交互式程序  << EOF
command 1
command 2
....
EOF

注意:最后的EOF必须单独占一行且顶格写,或使用<<-符号,<<-的作用是自动去除最后一个EOF前面的制表符\t对于空格无效,前后两个EOF可以是任意一个字符,只要前后两个边界内容一致即可

Last updated: