• Linuxday4——文件管理


    一、文件系统与目录结构

    目录描述
    / 第一层次结构 的根、 整个文件系统层次结构的根目录。
    /bin/ 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。
    /boot/ 引导程序文件,例如: kernel、initrd;时常是一个单独的分区[6]
    /dev/ 必要设备, 例如:, /dev/null.
    /etc/ 特定主机,系统范围内的配置文件。

    关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为etcetera, [7] 这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。 [8] 自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。 [9]

    /etc/opt/
    /opt/的配置文件
    /etc/X11/
    X Window系统(版本11)的配置文件
    /etc/sgml/
    SGML的配置文件
    /etc/xml/
    XML的配置文件
    /home/ 用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。
    /lib/ /bin/ 和 /sbin/中二进制文件必要的库文件。
    /media/ 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。便携式挂载点
    /mnt/ 临时挂载的文件系统。
    /opt/ 可选应用软件 包。[10]
    /proc/ 虚拟文件系统,将内核与进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应Procfs格式挂载。
    /root/ 超级用户的家目录
    /sbin/ 必要的系统二进制文件,例如: init、 ip、 mount。
    /srv/ 站点的具体数据,由系统提供。
    /tmp/ 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。
    /usr/ 用于存储只读用户数据的第二层次; 包含绝大多数的(多)用户工具和应用程序。[11]
    /usr/bin/
    非必要可执行文件 (在单用户模式中不需要);面向所有用户。
    /usr/include/
    标准包含文件。
    /usr/lib/
    /usr/bin//usr/sbin/中二进制文件的库。
    /usr/sbin/
    非必要的系统二进制文件,例如:大量网络服务的守护进程。
    /usr/share/
    体系结构无关(共享)数据。
    /usr/src/
    源代码,例如:内核源代码及其头文件。
    /usr/X11R6/
    X Window系统 版本 11, Release 6.
    /usr/local/
    本地数据的第三层次, 具体到本台主机。通常而言有进一步的子目录, 例如:bin/lib/share/.

    [12]

    /var/ 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。
    /var/cache/
    应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
    /var/lib/
    状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。
    /var/lock/
    锁文件,一类跟踪当前使用中资源的文件。
    /var/log/
    日志文件,包含大量日志文件。
    /var/mail/
    用户的电子邮箱。
    /var/run/
    自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]
    /var/spool/
    等待处理的任务的脱机文件,例如:打印队列和未读的邮件。
    /var/spool/mail/
    用户的邮箱(不鼓励的存储位置)
    /var/tmp/
    在系统重启过程中可以保留的临时文件。
    /run/ 代替/var/run目录。

    文件系统

      文件和目录被组织成一个单根倒置树结构

      文件系统从根目录下开始,用“/”表示

      根文件系统(rootfs):root filesystem

      文件名称区分大小写

      以.开头的文件为隐藏文件

      路径分隔的 / u 文件有两类数据:  元数据:metadata  数据:data

      文件系统分层结构:LSB  Linux Standard Base 

      FSH  http://www.pathname.com/fhs/ 

    文件名规则

      文件名最长255个字节

      包括路径在内文件名称最长4095个字节

      蓝色→目录 

      绿色→可执行文件   

      红色→压缩文件  

      浅蓝色→链接文件

      灰色→其他文件

      粉色→sock文件

      浅黄色→管道文件

      除了斜杠,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们。

      标准Linux文件系统(如ext4),文件名称大小写敏感。例如:MAIL, Mail, mail, mAiL

    文件类型

      -:普通文件

      d: 目录文件

      b: 块设备

      c: 字符设备

      l: 符号链接文件

      p: 管道文件pipe

      s: 套接字文件socket 

    应用程序的组成部分

      二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

      库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

      配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

      帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc 

    CentOS 7目录变化

      u/bin 和 /usr/bin 

      u/sbin 和 /usr/sbin 

      u/lib 和/usr/lib 

      u/lib64 和 /usr/lib64 

     二、创建和查看文件

    显示当前工作目录

      每个shell和系统进程都有一个当前的工作目录 

      CWD:current work directory

      显示当前shell CWD的绝对路径

      pwd:(printing working directory)

               -P 显示真实 物理路径

               -L 显示链接路径(默认)

    绝对和相对路径

      绝对路径   以正斜杠开始  完整的文件的位置路径

                         可用于任何想指定一个文件名的时候

      相对路径名    不以斜线开始    指定相对于当前工作目录或某目录的位置    可以作为一个简短的形式指定一个文件名

      基名:basename

    [root@centos6 ~]#basename /etc/sysconfig/network
    network

      目录名:dirname

    [root@centos6 ~]#dirname /etc/sysconfig/network
    /etc/sysconfig
    

      

    更改目录

     cd  改变目录

      使用绝对或相对路径: cd /home/wang/        cd home/wang

      切换至父目录:          cd ..

      切换至当前用户主目录: cd

      切换至以前的工作目录: cd -

      选项:-P 

      相关的环境变量:

     PWD:当前目录路径 

     OLDPWD:上一次目录路径

    列出目录内容

      列出当前目录的内容或指定目录

      用法:ls [options] [files_or_dirs]

      示例:

      ls -a 包含隐藏文件

      ls -l 显示额外的信息

      ls -R  目录递归通过

      ls -ld  目录和符号链接信息

      ls -1  文件分行显示

      ls –S  按从大到小排序

      ls –t   按mtime排序

      ls –u   配合-t选项,显示并按atime从新到旧排序

      ls –U  按目录存放顺序显示

      ls –X  按文件后缀排序

    查看文件状态

     stat

      文件:metadata, data

      三个时间戳:

        access time:访问时间,atime,读取文件内容     

        modify time: 修改时间, mtime,改变文件内容(数据)

        change time: 改变时间, ctime,元数据发生改变

    文件通配符

    文件通配符

    预定义的字符类:man 7 glob

    文件通配符

    创建空文件和刷新时间

     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 --preserv=all

      -d:--no-dereference --preserv=links 不复制原文件,只复制链接名

      --preserv[=ATTR_LIST]

      mode: 权限 

      ownership: 属主属组 

      timestamp:  

      links 

      xattr 

      context 

      all

    cp 选项

      -p: 等同--preserv=mode,ownership,timestamp

      -v: --verbose

      -f: --force

      -u:--update 只复制源比目标更新文件或目标不存在的文件

      --backup=numbered 目标存在,覆盖前先备份加数字后缀 

    移动和重命名文件

     mv [OPTION]... [-T] SOURCE DEST

      mv [OPTION]... SOURCE... DIRECTORY umv [OPTION]... -t DIRECTORY SOURCE...

         常用选项: 

           -i: 交互式

           -f: 强制

    删除

     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 递归删除目录树

    索引节点

      inode(index node)表中包含文件系统所有文件列表

      一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包括:

      文件类型,权限,UID,GID   

      链接数(指向这个文件名路径名称个数) 

      该文件的大小和不同的时间戳 

      指向磁盘上文件的数据块指针

      有关文件的其他数据

    inode表结构

    目录

      文件引用一个是 inode号

      人是通过文件名来引用一个文件

      一个目录是目录下的文件名和文件inode号之间的映射

    inode表

     

    cp和inode

      在 CP的 命令: 

       分配一个空闲的inode号,在inode表中生成新条目  在目录中创建一个目录项,将名称与inode编号关联    拷贝数据生成新的文件

    rm和inode

      rm 命令:

        链接数递减,从而释放的inode号可以被重用 

        把数据块放在空闲列表中

             删除目录项

        数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

    mv和inode

      如果mv命令的目标和源在相同的文件系统,作为mv 命令 

      用新的文件名创建对应新的目录项   

      删除旧目录条目对应的旧的文件名 

      不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

      如果目标和源在一个不同的文件系统, mv相当于cp和rm 

    硬链接

      创建硬链接会增加额外的记录项以引用文件

      对应于同一文件系统上一个物理文件

      每个目录引用相同的inode号

      创建时链接数递增

      删除文件时:

        rm命令递减计数的链接

        文件要存在,至少有一个链接数

        当链接数为零时,该文件被删除

      不能跨越驱动器或分区

      语法: 

       ln  filename  [linkname ] 

    符号(或软)链接

      一个符号链接指向另一个文件

      ls - l的 显示链接的名称和引用的文件

      一个符号链接的内容是它引用文件的名称

      可以对目录进行

      可以跨分区

      指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

      语法:

             ln -s  filename  [linkname]

    软链接与硬链接的区别:

      本质:

      1)硬链接:一个文件多个名字

      2)软连接:一个文件对应的快捷方式,不同文件

      表现:

      1) 链接数

      硬链接增长,软连接不增张

      2) 软连接可以跨分区

      3) 目录

      硬链接只能链接文件

      4) 原始和链接文件的关系

      硬链接平等关系

      软连接是依赖关系

      5) 删除

      删除后硬链接可用

      6)大小

      软连接大小取决于路径的长度

    注意:创建软连接时优先使用相对路径;(源文件的路径是相对路径 ,一定是相对与软连接文件的路径,而不是相对于当前路径)

    确定文件内容

      文件可以包含多种类型的数据

      检查文件的类型,然后确定适当的打开命令或应用程序使用

     file [options] <filename>...

      常用选项:

         -b 列出文件辨识结果时,不显示文件名称

         -f filelist 列出文件filelist中文件名的文件类型

          -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符

          -L 查看对应软链接对应文件的文件类型

               --help 显示命令在线帮助 

  • 相关阅读:
    09、Vue.js 3 —— 事件处理
    03、Vue.js 3 —— 模板语法
    vagrant 的介绍与使用
    Asp.Net Core 中的Swagger中间件
    chkconfig和systemd服务管理工具 init.d
    02、Vue.js 3 —— app应用 与 vm组件实例
    01、vue.js 3 笔记(只是本人笔记,大家请自行到官网看文档)
    Linux中的 打包、解压缩 命令(无废话)
    07、Vue.js 3 —— 条件渲染
    0x05、设计模式原则 —— 开闭原则
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/8705639.html
Copyright © 2020-2023  润新知