第二章、文件操作

1. Linux 文件系统简介

文件系统(File System)是操作系统用于存储数据、挂载设备而设计的一种数据结构,目的是存储数据和管理设备。如硬盘、U盘等上的数据文件的组织和存储都是用文件系统来实现的。

一般现代操作系统的文件系统都是树形结构。就是一个文件夹内可以存放多个文件或文件夹,文件夹内部还可以存储其他文件和文件夹,这就形成了一种树形结构,也称作目录树。

所谓 目录 你就理解成 文件夹 就行了。

在 UNIX 和 Linux 操作系统中,一切文件系统的起点都是 "根"(你可以理解成大树的根,向上可以有分支和叶子),用 字符 / 来表示。

是最顶层的文件夹,是访问一切文件或文件夹的起点位置。

MacOS 系统源于 UNIX 系统,因此 MacOS 的文件系统的目录结构也是和 Linux 一样,如下图所示。

Linux目录树

我们要想到达 "share" 这个文件夹要从 开始,然后进入 usr 文件夹,才能进入到 share 这个文件名。我们把从根开始,经过各个文件夹到达 share 的过程叫做"路径"。

路径

路径是描述一个文件或文件夹位置的字符串,如上图中 "share" 文件夹的路径就是 /usr/share,第一个 / 代表根,后面再出现 / 都代表路径的分隔符。

需要注意的是 Windows 的路径分隔符是 反斜杠 \,而 Linux 和 UNIX 的路径分隔符是 斜杠 /

路径分为两种:

当我们向一个计算机内插入U盘或光盘时,这是通常在某个文件夹下多出一个文件夹,这个多出来的文件夹,我们称之为挂载点。而U盘的文件系统将作为一个子分支挂载在这个挂载点上。在 Ubuntu 24.04 系统下插入 U 盘通常会挂载到 /media/你的用户名/ 这个文件下。你自己找个 U 盘试一下吧。

以下是根下的文件夹的说明和作用:

文件夹
内容
/
根,UNIX/Linux 文件系统最顶层的文件夹。
/bin/
用来存储用户命令的文件夹。文件夹 /usr/bin 也被用来存储用户命令。
/sbin/
用于存储系统命令(例如 shutdown)的文件夹。
/home/
默认是存储每个用户自己数据的文件夹(称为用户主目录),每个用户都会在这个文件夹下有一个子文件夹,用于存储此用户的数据(root用户除外)。
/root/
根用户(超级用户)的用户主目录。
/mnt/
该文件夹中通常包括系统引导后被挂载的文件系统的挂载点。如,光盘挂载点可以选择 /mnt/cdrom
/boot/
存放 Linux 内核和系统启动期间使用的文件的文件夹。
/lost+found/
被 fsck 用来放置零散文件(没有名称的文件)
/lib/
用来存放系统动态连接共享库的文件夹。
/dev/
存储设备文件的文件夹。
/etc/
存放了系统管理时要用到的各种配置文件的文件夹 。
/var/
用于存储 variable(或不断改变的)文件,例如日志文件和打印机假脱机文件的文件夹。
/usr/
这是存储 UNIX 系统命令的文件夹。用户的很多应用程序和文件都存放在这个文件夹下。
/proc/
一个虚拟的系统文件夹,可以在这个文件夹下获取系统信息。这些信息是在内存中,由系统运行时自己产生的。
/tmp/
用户和程序的临时文件夹。用来存放不同程序执行时产生的临时文件。
/opt/
可选文件和程序的存储文件夹。该文件夹主要被第三方开发者用来简易地安装和卸装他们的软件包。

在上述安装的Ubuntu 24.04 系统当中,当我们使用 weimingze 这个用户登录的时。我们只能对 /home/weimingze/ 这个文件进行修改。上述 根 / 下的文件夹有些只能查看(如:/etc/),甚至有些连看都不能看(如:/root),这源于 Linux 的权限管理。 weimingze 是普通用户,要管理上述文件夹需要使用 root 用户登录或切换到 root 用户。 这也是很多苹果手机或安卓手机在刷机之前必须要想办法 root 的原因之一,只有拿到 root 用户的权限才能对操作系统的核心进行修改。

Linux/UNIX 的文件名是区分大小写的(和 Windows 不同),例如 /home/weimingze//home/WEIMINGZE//home/Weimingze/ 是三个不同的文件夹。文件名也是如此。在工作时,如果没有特殊要求,建议要把文件名的英文部分用小写字母编写。

下面我们来学习一下文件系统常用的操作命令。

练习:

  1. Linux 操作系统的路径的分隔符是什么?
  2. Windows 操作系统的路径的分隔符是什么?
  3. Windows 的绝对路径的的起始符号是什么?
  4. Linux 的绝对路径的的起始符号是什么?