• Linux文件系统(Linux一切皆文件)


    Linux的文件系统

    在Linux操作系统中,最基本的功能就是文件管理,而文件的管理系统也是由文件按系统来完成的----Linux一切皆文件

    操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,人类肯定不能直接看懂这些二进制数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux 有多种文件系统,不同的文件系统支持不同的体系。

    在 Windows 下有磁盘分区的概念,比如 C,D,E 盘等,在 Linux 下没有这个概念,因此Linux 下你找不到像 C、D、E 盘这样的东西。在 Linux 下创建一个分区并且格式化好以后我们要将其“挂载”到一个目录下才能访问这个分区。

    Linux 下我们使用 mount 命令来挂载磁盘。挂载磁盘的时候是需要确定挂载点
    的,也就是你的这个磁盘要挂载到哪个目录下。

    Linux文件结构

    直接打开文件浏览器以后,我们默认不是处于根目录中的。Ubuntu 是支持多用户的,Ubuntu 为每个用户创建了一个根目录,其实所谓的给每个用户创建一个根目录只是方便说而已,这个所谓的用户根目录其实就是 “/” 下的一个文件夹,
    在这里插入图片描述
    用户可以对自己的用户根目录下的文件进行随意的读写操作,但是如果要修改根目录 “/” 下的文件就会提示没有权限。
    在这里插入图片描述

    各文件夹的作用

    大多数 Linux 发行版都会向你显示与你在上图中看到的相同或非常类似的结构。 这意味着,即使你现在感到困惑,掌握这一点,你将掌握大部分(如果不是全部的话)全世界的 Linux 文件系统。

    为了让你开始走上掌控之路,让我们看看每个目录的用途。 当我们查看每一个目录的时候,你可以使用 ls 来查看他们的内容。

    /bin

    /bin 目录是包含一些二进制文件的目录,即可以运行的一些应用程序。 你会在这个目录中找到上面提到的 ls 程序,以及用于新建和删除文件和目录、移动它们基本工具。还有其它一些程序,等等。文件系统树的其他部分有更多的 bin 目录,但我们将在一会儿讨论这些目录。

    /boot

    /boot 目录包含启动系统所需的文件。不要动它! 如果你在这里弄乱了其中一个文件,你可能再无法运行你的 Linux,修复被破坏的系统是非常痛苦的一件事。 另一方面,不要太担心无意中破坏系统: 你必须拥有超级用户权限才能执行此操作。

    /dev

    /dev 目录包含设备文件。 其中许多是在启动时或甚至在运行时生成的。 例如,如果你将新的网络摄像头或 USB 随身碟连接到你的机器中,则会自动弹出一个新的设备条目。

    /etc

    /etc 的目录名称会让人变得非常的困惑。/etc 得名于最早的 Unix 系统们,它的字面意思是 etcetera(诸如此类) ,因为它是系统文件管理员不确定在哪里放置的文件的垃圾场。

    /home

    /home 是你可以找到用户个人目录的地方。在我的情况下,/home 下有两个目录:/home/libin,其中包含我所有的东西;

    /lib

    /lib 是库文件所在的地方。库是包含应用程序可以使用的代码文件。它们包含应用程序用于在桌面上绘制窗口、控制外围设备或将文件发送到硬盘的代码片段。

    在文件系统周围散布着更多的 lib 目录,但是这个直接挂载在 //lib 目录是特殊的,除此之外,它包含了所有重要的内核模块。 内核模块是使你的显卡、声卡、WiFi、打印机等工作的驱动程序。

    /media

    /media 目录中,当你插入外部存储器试图访问它时,将自动挂载它。与此列表中的大多数其他项目不同,/media 并不追溯到 1970 年代,主要是因为当计算机正在运行而动态地插入和检测存储(U 盘、USB 硬盘、SD 卡、外部 SSD 等),这是近些年才发生的事。

    /mnt

    然而,/mnt 目录是一些过去的残余。这是你手动挂载存储设备或分区的地方。现在不常用了。

    /opt

    /opt 目录通常是你编译软件(即,你从源代码构建,并不是从你的系统的软件库中安装软件)的地方。应用程序最终会出现在 /opt/bin 目录,库会在 /opt/lib 目录中出现。

    /proc

    /proc,就像 /dev 是一个虚拟目录。它包含有关你的计算机的信息,例如关于你的 CPU 和你的 Linux 系统正在运行的内核的信息。与 /dev 一样,文件和目录是在计算机启动或运行时生成的,因为你的系统正在运行且会发生变化。

    /root

    /root 是系统的超级用户(也称为“管理员”)的主目录。 它与其他用户的主目录是分开的,因为你不应该动它。

    /run

    /run 是另一个新出现的目录。系统进程出于自己不可告人的原因使用它来存储临时数据。这是另一个不要动它的文件夹。

    /sbin

    /sbin/bin 类似,但它包含的应用程序只有超级用户(即首字母的 s )才需要。你可以使用 sudo 命令使用这些应用程序,该命令暂时允许你在许多 Linux 发行版上拥有超级用户权限。/sbin 目录通常包含可以安装、删除和格式化各种东西的工具。你可以想象,如果你使用不当,这些指令中有一些是致命的,所以要小心处理。
    在这里插入图片描述

    声明:以上第三章总结来源于网络博客:https://linux.cn/article-9798-1.html

    文件操作命令

    创建新文件命令—touch

    touch 不仅仅可以用用来创建文本文档,其它类型的文档也可以创建,命令格式如下:

    touch [参数] [文件名]
    
    • 1

    使用 touch 创建文件的时候,如果[文件名]的文件不存在,那就直接创建一个以[文件名]命名的文件,如果[文件名]文件存在的话就仅仅修改一下此文件的最后修改日期,常用的命令参数如下:

    -a 只更改存取时间。
    -c 不建立任何文件。
    -d<日期> 使用指定的日期,而并非现在日期。
    -t<时间> 使用指定的时间,而并非现在时间。
    
    • 1
    • 2
    • 3
    • 4

    文件夹创建命令—mkdir

    既然可以创建文件,那么肯定也可以创建文件夹,创建文件夹使用命令mkdir,命令格式如下:

    mkdir [参数] [文件夹名目录名]
    
    • 1

    主要参数如下:
    -p 如所要创建的目录其上层目录目前还未创建,那么会一起创建上层目录。

    文件及目录删除命令—r

    既然有创建文件的命令,那肯定有删除文件的命令,要删除一个文件或者文件夹可以使用命令rm,此命令可以完成删除一个文件或者多个文件及文件夹,它可以实现递归删除。

    对于链接文件,只删除链接,原文件保持不变,所谓的链接文件,其实就是 Windows 下的快捷方式文件,此命令格式如下:

    rm [参数] [目的文件或文件夹目录名]
    
    • 1

    命令主要参数如下:

    -d 直接把要删除的目录的硬连接数据删成 0,删除该目录。
    -f 强制删除文件和文件夹(目录)-i 删除文件或者文件夹(目录)之前先询问用户。
    -r 递归删除,指定文件夹(目录)下的所有文件和子文件夹全部删除掉。
    -v 显示删除过程。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    文件夹(目录)删除命令—rmdir

    上面我们讲解了如何使用命令rm删除文件夹,那就是要加上参数-rf,其实 Linux 提供了直接删除文件夹(目录)的命令—rmdir,它可以不加任何参数的删除掉指定的文件夹(目录),命令格式如下:

    rmdir [参数] [文件夹(目录)]
    
    • 1

    命令主要参数如下:

    -p 删除指定的文件夹(目录)以后,若上层文件夹(目录)为空文件夹(目录)的话就将其一起删除。
    
    • 1

    文件复制命令—cp

    在 Windows 下我们可以通过在文件上点击鼠标右键来进行文件的复制和粘贴,在 Ubuntu下我们也可以通过点击文件右键进行文件的复制和粘贴。但是本节我们来讲解如何在终端下使用命令来进行文件的复制,Linux 下的复制命令为cp,命令描述如下:

    cp [参数] [源地址] [目的地址]
    
    • 1

    主要参数描述如下:

    -a 此参数和同时指定“-dpR”参数相同
    -d 在复制有符号连接的文件时,保留原始的连接。
    -f 强行复制文件,不管要复制的文件是否已经存在于目标目录。
    -I 覆盖现有文件之前询问用户。
    -p 保留源文件或者目录的属性。
     -r 或-R 递归处理,将指定目录下的文件及子目录一并处理
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    文件移动命令—mv

    有时候我们需要将一个文件或者文件夹移动到另外一个地方去,或者给一个文件或者文件夹进行重命名,这个时候我们就可以使用命令“mv”了,此命令格式如下:
    mv [参数] [源地址] [目的地址]

    在这里插入代码片
    
    • 1

    主要参数描述如下:

    -b 如果要覆盖文件的话覆盖前先进行备份。
    -f 若目标文件或目录与现在的文件重复,直接覆盖目的文件或目录。
    -I 在覆盖之前询问用户。
    
    • 1
    • 2
    • 3

    文件查询和搜索

    文件的查询和搜索也是最常用的操作,Linux中查询某个文件是否存在,或者搜索哪些文件都调用了某个函数等等。本节我们就讲解两个最常用的文件查询和搜索命令:findgrep

    find 命令用于在目录结构中查找文件,其命令格式如下:

    find [路径] [参数] [关键字
    
    • 1

    路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一部分,主要参数如下:

    -name<filename> 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。
    -depth 从指定目录下的最深层的子目录开始查找。
    -gid<群组识别码>查找符合指定的群组识别码的文件或目录。
    -group<群组名称> 查找符合指定的群组名称的文件或目录。
    -size<文件大小> 查找符合指定文件大小的文件。
    -type<文件类型> 查找符合指定文件类型的文件。
    -user<拥有者名称> 查找符合指定的拥有者名称的文件或目录。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    grep 命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指
    定的关键字,grep 命令就会把包含指定关键字的这一行标记出来,grep 命令格式如下:

    grep [参数] 关键字 文件列表
    
    • 1

    grep 命令一次只能查一个关键字,主要参数如下:

    -b 在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。
    -c 计算符合关键字的列数。
    -d<进行动作> 当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 指令
    将回报信息并停止搜索。
    -i 忽略字符大小写
    -v 反转查找,只显示不匹配的行。
    -r 在指定目录中递归查找。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    总结

    在LINUX系统中有一个重要的概念:一切皆是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

    👇点击下方公众号卡片获取资料👇
  • 相关阅读:
    24.第12届蓝桥杯省赛真题题解
    Android 11.0 系统Settings去掉开发者模式功能
    计算机毕业设计springboot+vue基本微信小程序的校园二手物品交易平台系统
    DP总结-壹-最长公共型
    TIOBE 5 月榜单揭晓:哪些编程语言正在上升?
    3A4000架构银河麒麟V10编译安装filezilla
    EasyClick易点云测低代码拖拽式在线UI编辑器
    docker 安装minio 教程
    java计算机毕业设计高校防疫物资管理系统MyBatis+系统+LW文档+源码+调试部署
    windows usbip(瑞芯微windows开发)
  • 原文地址:https://blog.csdn.net/qq_45172832/article/details/125599732