• linux 文件管理


    文件管理

    Linux的文件系统和目录结构图:

    先看centos6.8的目录结构:用tree命令可以查看,如果没安装请使用 sudo yum install tree 命令安装

    1. [root@centos6 cent]# tree / -L 1
    2. /
    3. ├── bin             1
    4. ├── boot            2
    5. ├── dev             3
    6. ├── etc             4
    7. ├── home            5
    8. ├── lib             6
    9. ├── lib64           7
    10. ├── lost+found     centos7已弃用
    11. ├── media           8
    12. ├── misc            centos7已弃用
    13. ├── mnt             9
    14. ├── net             centos7已弃用
    15. ├── opt             10
    16. ├── proc            11
    17. ├── root            12
    18. ├── sbin            13
    19. ├── selinux         centos7已弃用
    20. ├── srv             14
    21. ├── sys             15
    22. ├── tmp             16
    23. ├── usr             17
    24. └── var             18


    再看centos7的目录结构:用tree命令可以查看

    1. [root@localhost ~]# tree / -L 1
    2. /
    3. ├── bin -> usr/bin         1
    4. ├── boot                   2
    5. ├── dev                    3
    6. ├── etc                    4
    7. ├── home                   5
    8. ├── lib -> usr/lib         6
    9. ├── lib64 -> usr/lib64     7
    10. ├── media                  8
    11. ├── mnt                    9
    12. ├── opt                    10
    13. ├── proc                   11
    14. ├── root                   12
    15. ├── run                    centos7新特性
    16. ├── sbin -> usr/sbin       13
    17. ├── srv                    14
    18. ├── sys                    15
    19. ├── tmp                    16
    20. ├── usr                    17
    21. └── var                    18

    RHEL7目录变化:

    • /bin 和 /usr/bin 

    • /sbin 和 /usr/sbin 

    • /lib 和/usr/lib

    • /lib64 和 /usr/lib64 

    还有一张整理好的图片:

    文件系统结构详解:

    /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器 (bootloader, grub)都存放于此目录 

    /bin:供所有用户使用的基本命令;不能关联至独立分区, OS启动即会用到的程序 

    /sbin:管理类的基本命令;不能关联至独立分区,OS启动即 会用到的程序 

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

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

    /etc:配置文件目录 

    /home/USERNAME:普通用户家目录 

    /root:管理员的家目录 

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

    /mnt:临时文件系统挂载点 

    /dev:设备文件及特殊文件存储位置 b: block device,随机访问 c: character device,线性访问 

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

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

    /tmp:临时文件存储位置

    /usr: universal shared, read-only data 

            bin: 保证系统拥有完整功能而提供的应用程序 

            sbin: 

            lib:32位使用 

            lib64:只存在64位系统 

            include: C程序的头文件(header files) 

            share:结构化独立的数据,例如doc, man等 

            local:第三方应用程序的安装位置 bin, sbin, lib, lib64, etc, share

    /var: variable data files 

            cache: 应用程序缓存数据目录 

            lib: 应用程序状态信息数据 

            local:专用于为/usr/local下的应用程序存储可变数据; 

            lock: 锁文件 

            log: 日志目录及文件 

            opt: 专用于为/opt下的应用程序存储可变数据; 

            run: 运行中的进程相关数据;通常用于存储进程pid文件 

            spool: 应用程序数据池 

            tmp: 保存系统两次重启之间产生的临时数据

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

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

    /selinux: security enhanced Linux,selinux相关的安全策 略等信息的存储位置


    一些重要目录:

    二进制程序:

    1. /bin
    2. /sbin
    3. /usr/bin
    4. /usr/sbin
    5. /usr/local/bin
    6. /usr/local/sbin

    库文件:

    1. /lib
    2. /lib64
    3. /usr/lib
    4. /usr/lib64
    5. /usr/local/lib
    6. /usr/local/lib64

    配置文件:

    1. /etc
    2. /etc/DIRECTORY
    3. /usr/local/etc

    帮助文件:

    1. /usr/share/man
    2. /usr/share/doc
    3. /usr/local/share/man
    4. /usr/local/share/doc

    文件系统:

    • 文件系统从根目录下开始的,用 "/"表示

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

    • 跟文件系统(rootfs): root filesystem

    • 名称是大小写敏感(特殊的文件系统除外)

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

    • 路径分隔符 / 

    • 文件有两类数据:    

        元数据 : metadate

        数据  : data

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

    • FHS : (Filesystem Hierarchy Standard):文件系统层次结构标准

    文件命名规则:

     

    • 包括路径在内文件名最长4095个字符,用 / 分隔的路径不能超过255个字节

    • 除了 斜杠 和 NUL ,所有的字符都有效

    • 使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们

    • 标准的Linux文件系统(如ext4),文件名称大小写敏感

     

    文件颜色照应:

     

    • 蓝色-->目录

    • 绿色-->可执行文件

    • 红色-->压缩文件

    • 浅蓝色-->链接文件

    • 灰色-->其他文件

    Linux下文件的类型:

     

    • -: 普通文件

    • d: 目录文件

    • b: 块设备

    • c: 字符设备

    • l: 符号链接文件

    • p: 管道文件pipe

    • s: 套接字文件socket


     

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

    显示当前的shell的绝对路径命名: #pwd :printing working directory

     

    PWD:保存了当前目录路径

    OLDPWD:保存上一次所在目录路径

    可以用 #echo $PWD 查看

     

    路径又分为两种,一种为绝对路径,一种为相对路径

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

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

        相对路径不用以斜线开始,指定相对于当前工作目录或某

        目录的位置,可以作为一个简短的形式指定一个文件名

    两种路径方式各有好处,需要灵活应用

     


     

    来说一下 cd 命令的简单使用

        cd : Change  the  current  directory  to  dir.改变目录

      可以改变相对或者绝对路径:

        cd home/Download

        cd /home/nineven

      到上一级目录:cd..

      进入自己的主目录:cd ,cd ~

      进入以前的工作目录:cd -

     


    ls,是用来列出目录内容的命令

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

    用法:

    ls [OPTION]... [FILE]...

    比如:

    ls -a 显示隐藏的文件

    ls -l 显示额外的信息

    ls -R 目录递归通过 ,文件夹内的内容递归显示

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

    ls -1  文件分行显示 

    ls –S  按从大到小排序 

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

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

    这些命令自己可以ls --help 查看,一定要自己学会运用帮助命令

     


    文件的状态查看 stat FILENAME

     

    stat 文件:metadate 元数据  ,date 数据

    时间戳,通过stat查看,比如:

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

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

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

    使用touch命令可以更改时间戳

     先用touch --help查看一下,发现:

       -a    change only the access time

       -m    change only the modification time

       -t STAMP  use [[CC]YY]MMDDhhmm[.ss] instead of current time  

    命令如下:

        先查看一下详细信息:

    然后执行 touch -a issue

    然后执行 touch -m issue

    修改指定时间比如 touch -t200808080808.24 issue

     

    比如一些编辑vim,查看cat,复制cp等都会改变时间戳


     

    文件通配符:

     

    • * 匹配零个或多个字符 

    • ? 匹配任何单个字符

    • ~ 当前用户家目录 

    • ~username 用户家目录 

    • ~+ 当前工作目录 

    • ~- 前一个工作目录 

    • [0-9] 匹配一个数字范围 

    • [a-z]:大写和小写字母 

    • [A-Z]:大写字母

     

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

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

     

    预定义的字符类:

    可以用 #man -f glob 查看所在的章节然后 #man 7 glob

     

    • [:digit:] :任意数字,相当于0-9

    • [:lower:] :任意小写字母

    • [:upper:] :任意大写字母

    • [:alpha:] :任意大小写字母

    • [:alnum:] :任意数字或字母

    • [:space:] :空格

    • [:punct:] :标点符号

     

    实战训练:

     

    1、显示/var目录下所有以l开头,以一个小写字母结尾,且中 间出现至少一位数字的文件或目录 

        

    ls -d /var/l*[[:digit:]]*[[:lower:]]

    2、显示/etc目录下以任意一位数字开头,且以非数字结尾的 文件或目录 

    ls -d /etc/[[:digit]]*[^[:digit:]]

    3、显示/etc/目录下以非字母开头,后面跟了一个字母及其 它任意长度任意字符的文件或目录 

    ls -d /etc/[^[:alpha:]][[:alpha:]]*[[:alnum:]]*

    4、显示/etc目录下所有以m开头以非数字结尾的文件或目录 

    ls -d /etc/m*[^[:digit:]]

    5、显示/etc目录下,所有以.d结尾的文件或目录 

     ls -d /etc/*.d

    6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文 件或目录

    ls -d /etc/[mnrp]*.conf

     

  • 相关阅读:
    C++面试八股文:用过STL吗?
    27.5 Java集合之Set学习(基本概念,存储原理,性能测试)
    C++ Reference: Standard C++ Library reference: C Library: ctime
    Himall验证Web帮助类获得表单中的值、获得上次请求的url
    网络协议常见问题
    Java基础之浅谈集合
    (216)Verilog HDL:实现FSM1异步复位
    无线传感器网络:排队论(Queueing Theory)模型
    【力扣周赛第305场】全题题解
    使用Spring Gateway为对象存储系统MinIo和kkFileView文档预览增加登录验证
  • 原文地址:https://blog.csdn.net/ly1358152944/article/details/126254773