Linux根文件系统详解

    Linux系统的文件系统又被称为根文件系统(roofs),FHS是Linux系统的文件系统标准,各个不同的Linux发行版都得遵从FHS

FHS规定如下:

·/bin目录

    bin(binary,二进制文件),该目录里面是一些二进制文件,Linux系统下二进制文件是ELF格式的,而Windows系统下的二进制文件是PE格式的,该目录下全是一些可执行的二进制文件,所有的用户命令都在其中

    wKioL1e-4r6gLvkmAAB_vanCriU536.png

·/boot目录

    该目录下包含着一些和系统启动相关的文件,比如我们的内核文件、initrd以及grub(bootloader)

    wKiom1e-4wzjeJ_LAAA-kX_vg9k637.png

·/dev目录

    该目录下是我们系统的设备文件,设备文件是Linux系统中的一些没有大小,只有元数据特殊文件,显示文件大小的地方被设备文件的设备号所替代,设备号分为主设备号(major)和次设备号(minor),设备分为块设备和字符设备,块设备是用来进行随机访问数据块的,字符设备是用来实现线性访问的,以字符为单位有次序的访问数据

    wKiom1e-486QQ1ADAACaoOzqonY843.png

·/etc目录

    该目录下存储的是所有的配置文件,配置文件都是一些纯文本文件

    wKioL1e-5ILxg96jAACeuyX7Ytw890.png

·/home目录

    该目录为系统上所有普通用户的家目录,每一个普通用户的家目录通常默认为/home/USERNAME,而管理员的家目录则为/root

    wKioL1e-5STSwUowAAAUk56j8O4399.png

·/lib目录

    该目录下都是一些库文件和内核模块文件,内核模块文件都在该目录下的modules目录里,内核模块文件分为静态库文件和动态库文件:

    静态库文件指的是Linux系统中以.a结尾的文件,静态库包含在程序里面(因为程序的执行需要库),方便程序的移植

    动态库文件指的是Linux系统中以.so结尾的文件,在Windows系统中是以.dll结尾的文件,动态库文件只用添加一次,可以节省内存,下次可以直接调用该库文件

    wKioL1e-5sOxsHUPAAAogdmbhns023.png

    库:

        库指的是一些封装好的可以被直接调用的数据包,但是库文件不能单独执行,因为没有库文件的执行入口,库文件只能被调用

·/media目录

    移动设备(如U盘)的挂载点

·/mnt目录

    额外的临时的文件系统的挂载点

    /media和/mnt目录都是挂载点目录,我们都可以在这两个目录上挂载,没有严格的区分要求

·/misc目录

    该目录下是一些杂项无法归类的文件

·/opt目录

    该目录是一个可选目录,是第三方软件的安装目录

    wKioL1e--TGwEzhvAAAIb8QnkqU447.png

·/proc目录

    该目录是一个伪文件系统,里面是一些内核的映射文件,映射文件不是真实的文件,是假的文件,我们可以在这个目录下查看内核的状态

    wKioL1e--b3z4UK_AACqQwCkV1M035.png

·/sys目录

    该目录也是一个伪文件系统,里面都是一些和硬件设备相关的属性映射文件,该目录在关机的时候是空目录,开机的时候里面才会有内容

    wKioL1e--mmzMK8qAAAWSK15dJ0596.png

·/tmp目录

    该目录是一个存放临时文件的目录,如果文件一个月没有被人动过,则文件会被自动清除,任何用户都可以在该目录下创建文件,但是只能删除自己的创建的文件

    wKiom1e--0TBCZooAABAmaPBOmo140.png

·/var目录

    该目录是一个大小可变的目录,随着我们计算机的运行,目录的容量会越来越大

    wKioL1e--7mAc1McAAAeL36jX4k892.png

    pid表示进程的id号

·/sbin目录

    所有的系统管理命令都在这个目录中,这个目录和/bin目录都与我们的系统启动相关

    wKioL1e-_I_w4rhQAACFfZc3JLA084.png

·/usr目录

    usr(universal shared read-only->全局共享只读目录),我们系统中的/bin、/sbin以及/lib(公共库)目录是必须存在的目录,而/usr目录下的bin、sbin以及lib目录都是一些与系统启动相关的目录,而我们/usr/local目录下的bin、sbin以及lib目录都是一些独立的文件系统,这些目录并非必须存在的,它们只是一些第三方的安装路径

    wKiom1fBZczDJkowAAArXaRihOA388.png


·Linux中的文件命名规则

    1,文件名的长度不能超过255个字符

    2,不能使用"/"当做文件名

    3,文件名严格区分大写

·Linux目录管理

    ->mkdir命令:创建空目录

        wKioL1fBZ2-irgsmAAAupEEXPrk776.png

        -p选项,表示创建父目录,递归创建父子目录

        wKioL1fBaAfQPmPlAAA8XkkycQg371.png

        -v(verbose)选项,表示显示命令执行过程中的详细信息,即显示目录的创建过程

        wKioL1fBaMLxJS4aAAAjnCYFwA0802.png

      Linux的重要哲学思想,执行一条命令后,标准输出不显示信息就是最好的信息,表示该命令执行正确

        我们在创建目录的过程中还可以使用花括号进行目录名与文件名的展开:

          wKioL1fBg4TTCnlzAABLPeB6sbE563.png

        

    ->rmdir命令,删除空目录

        wKiom1fBa2ThVYmOAABK1jc9Big419.png

        -p选项,表示删除父子目录

        wKioL1fBbMfCzR_RAABNf_CFOgM094.png

·Linux文件管理

    无论是Linux系统还是Windows系统,文件名和目录名均不能重名

    ->stat命令

        可以用来查看文件的状态

        wKioL1fBbY6jvgkoAABMK8RzhfU696.png

    ->touch命令

        文件管理的命令,可以创建空文件

        wKiom1fBdfLCJbgGAAANkr5TeRU470.png

        -c选项,不创建文件

        wKioL1fBdm3TlKUrAAATDxk0Yx4810.png

        -a选项,改变文件的atime

        wKiom1fBduCA9RSMAACdMnXiopc925.png

        -m选项,改变文件的mtime

        wKioL1fBd2jyO7y8AACYsN-ahrU208.png

        由上图知,无论是改变文件的atime还是mtime,文件的ctime都会改变,因为文件的atime和mtime都属于文件的属性,无论改变了atime还是mtime,ctime都会改变

        -t选项,在创建文件的时候可以指定时间

        wKioL1fBeO7xUeCtAABTFVvjkVQ400.png

    我们创建文件,也可以使用文件编辑器,如nano、vi以及vim:

        wKioL1fBebajzci5AAApT0KsQ20880.png

·ASCII

    美国国家标准信息交换代码,计算机中最小的存储单位为字节(Byte->一个字节等于8位二进制),ASCII标准表相当于一个字符处理器,一个字符的大小是一个字节,一个汉字的大小是两个字节

·Unicode

    全球标准

·nano文件编辑器

    wKiom1fBe-3RS_FBAAA0vf54OpA258.png

·rm(remove)命令

    删除文件或目录的命令,默认在交互模式下进行,即rm命令是rm -i的命令别名

    wKioL1fBfJGQUS_SAAAikWLoyuQ915.png

    \COMMAND->表示使用命令本身的功能,而不是用命令别名

        \rm命令,表示直接删除文件或目录而不用进入交互模式:

            wKiom1fBfU3jwsKwAAAX2PdUsP8692.png

    ls命令为ls --color命令的命令别名,故ls命令默认显示文件及目录的颜色:

        wKiom1fBfvDwXoRaAAAUdFw0kQM051.png

    rm -f(force->表示强制删除文件或目录,而不再进入交互模式):

        wKiom1fBgFPBccMpAAAWeRB824Y102.png

    rm -r(recursive->表示删除目录,递归删除,不论目录为不为空,都可删除):

        wKiom1fBgS_R21E2AABOOD9ODd8030.png