第三天:文件管理相关

文件系统标准地址:https://www.pathname.com/fhs/

一、文件系统目录结构

  

    1、文件和目录以树形结构方式保存

  2、各目录路径分隔以 /

  3、文件名最长255个字节

  4、蓝色--》目录    绿色--》可执行文件  红色--》压缩文件  浅蓝色--》链接文件  灰色--》其他文件

  5、常见文件目录功能

    /boot 引导文件存放目录,内核文件、引导加载器都存放于此目录

    /bin  所有用户使用的基本命令:不能关联至独立分区,OS启动即会用到的程序.放二进制文件 

    /sbin  管理类的基本命令;不能关联到独立分区,OS启动即会用到的程序.放二进制文件 

    /lib  启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

    /lib64  专用于x86-64系统上的辅助共享库文件存放位置

    /etc   配置文件目录,类似注册表

    /home/USERNAME  普通用户家目录    

    /root  管理员的家目录

    /media  便携式移动设备挂载点

    /mnt  临时文件系统挂载点

    /dev  设备文件及特殊文件存储位置

    /opt  第三方应用程序的安装位置

    /srv  系统上运行的服务用到的数据

    /tmp  临时文件存储位置

    /usr  类似windows里的windows和programs文件 

    /var  放日志文件

    /proc  用于输出内核与进程信息相关的虚拟文件系统

    /sys  用于输出当前系统上硬件设备相关信息虚拟文件系统

    /selinux  相关的安全策略等信息的存储位置

    /run    运行时临时文件

  6、应用程序的组成部分

    

   7、LINUX下的文件类型

    普通文件

    d 目录文件directory

    l 符号链接文件link

    b 块设备block

    c 字符设备character

    p 管道文件pipe

    s 套接字文件socket

二、创建和查看文件

  1、显示当前目录:pwd  -P (显示真实物理路径)  -L(显示链接路径)

  2、绝对和相对路径:绝对路径以/根目录开始

  3、更改目录

      切换至父目录:cd ..

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

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

  4、列出目录内容

      ls :列出当前目录的内容和指定目录

      选项:-a 包含隐藏文件

         -I 显示额外的信息

         -R 目录递归

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

         -1 文件分行显示

         -S 按从大到小排序

         -t 按mtime排序

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

         -U 按目录存放顺序显示

         -X 按文件后缀排序

         -F 对不同类型文件显示时附加不同的符号 :*/=》@|

         -C 文件多时,以多列的方式显示文件,默认是一列

  5、查看文件状态:stat 

      access time 访问时间   延时更新超一天以上及修改时间新于atime

      modify time  修改时间

      change time 改变时间

      Birth time  出生时间

  6、确定 文件内容:file

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

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

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

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

      --help  显示命令在线帮助

  7、显示支持的字符集编码列表

      iconv -l

  8、文件通配符

    *    匹配零个或多个字符,但不匹配"."开头的文件,即隐藏文件

    ?    匹配任何单个字符,一个汉字也算一个字符

    ~    当前用户家目录

    ~djy   用户djy家目录

    [0-9]  匹配数字范围

    [a-z]   一个字母

    [A-Z]   一个字母

    [djy]    匹配列表中的任何一个字符

    [^djy]    匹配列表中的所有字符以外的字符

    [^a-z]   匹配列表中的所有字符以外的字符

    . 和~+  当前工作目录

    ~-    前一个工作目录

    

    

   9、创建空文件或刷新文件

      touch  [OPTION] ... FILE...

      

   10、 basename :取文件的基名;  dirname 取文件的目录名

  11、文件属性:metadata

三、复制、转移和删除文件

  1、复制文件或目录:copy

    

     

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

      -b 目标存在,覆盖前先备份,默认形式

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

    2、移动和重命名文件:

    (1)mv  

      -i  交互式

      -f  强制

      -b  目标存在,覆盖前先备份

     (2)rename

       rename [options] <expression> <replacement> <file>

   3、删除文件:rm

     rm [OPTION] ... FILE ...

        -I 交互式

        -f 强制删除

        -r 递归

        --no-preserve-root  删除/

    4、显示目录树:tree

      -d  只显示目录

      -L level  指定显示的层级数目

      -P pattern 只显示由指定wild-card pattern 匹配到的路径

    5、创建目录:mkdir  

      -p 存在于不报错,且可自动创建所需的各目录

      -v 显示详细信息

      -m MODE :创建目录时直接指定权限  

     6、删除空目录rmdir

      -p 递归删除父空目录

      -v 显示详细信息

        rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令。

四、软和硬链接

   1、硬(hard)链接:  ln  filename [linkname]

    本质上就给一个文件起一个新的名称,实质是同一个文件

   2、符号symbolic(或软soft)链接

    一个符号链接指向另一个文件,就像windows中快捷方式,软链接文件和原文件本质上不是同一个文件。

   3、ln -s filename [filename]

   4、查看链接:readllink   NAME

   5、区别:

      (1)本质:硬链接本质是同一个文件,软链接本质不是同一个文件

      (2)跨设备:硬链接不支持,软链接支持

      (3)inode :硬链接相同,软链接不同

      (4)链接数:硬:创建新的硬链接,数量会增加,删除硬链接数量减少;软链接创建或删除,链接数不会变化。

       (5)文件夹:硬链接不支持,软链接支持

       (6)相对路径:硬链接,原始文件相对路径是相对于当前工作目录;软链接,原始文件相对路径 是相对于链接文件的相对路径

        (7)删除源文件:硬链接,只是链接数减少,但链接文件的访问不受影响;软链接,链接文件将无法访问。

        (8)文件类型:硬链接,和源文件相同;软链接,和源文件无关

        (9)文件大小 :硬链接,和源文件相同;软链接为源文件的路径的长度

五、IO重定向和管道

   1、三种I/O设备:标准输入(STDIN) -0;     标准输出(STDOUT) -1 ;    标准错误(STDERR) -2 

  2、标准输出和错误重定向:

     1>   >        把STDOUT重定向到文件

     2>    把STDERR重定向到文件

     &>    把标准输出和错误都重定向

     <&    同上

     >>     追加标准输出重定向至文件

     2>>    追加标准错误重定向至文件

  3、标准输入重定向:

    tr  转换和删除字符  :tr [OPTION]  ...  SET 1  [SET2]  

          -d   删除所有属于第一个字符集的字符

        -s  把连续重复的字符以单独一个字符表示,即去重

        -t  将第一个字符集对应字符转化为第二字符集对应的字符

        -c  取字符集的补集

     cmd<<<"strings"

  4、管道:(使用符号”|“表示)用来连接多个命令

    

posted @ 2024-01-04 08:26  djyhello  阅读(16)  评论(0编辑  收藏  举报