本文约7500字,在上一篇帖子《一份靠谱的从零开始学习Linux文件系统的学习路径》中,规划了学习Linux文件系统的大纲。本文聚焦Linux文件系统入门阶段的重点内容,结合实操场景,详细解析每个技术点的原理、用法和避坑要点,全程干货无冗余,适合零基础初学者快速上手,也可作为后续深入学习的基础参考。
我建了一个BSP学习交流群,想学BSP或者已经是BSP开发者可私信我,加入群,一起交流学习,共同进步。
关注公众号, 即可获得与Linux相关的电子书籍以及常用开发工具,文末有文档清单。
Linux文件系统的核心逻辑只有一个:
一切皆文件,且所有文件都围绕“单根目录”组织,没有盘符之分。
一 核心基础:Linux单根目录结构
Linux与Windows文件系统最本质的区别,在于"目录组织方式"——Windows采用"多根结构",以C盘、D盘等盘符作为根节点,每个盘符下独立组织文件;而Linux采用"单根结构",以/(正斜杠,称为根目录)作为唯一的根节点,所有文件、目录、硬件设备,甚至进程,都挂载在根目录下,形成一棵统一的目录树。
很多初学者的第一个误区,就是在Linux中寻找“C盘”,其实这是完全错误的——Linux中没有任何盘符,哪怕我们的电脑有多个硬盘,最终也会被挂载到根目录下的某个子目录中,统一由根目录管理。
[1]. 单根目录结构的核心逻辑
我们可以把Linux的单根目录结构,想象成一棵“倒生长的树”:
根目录/是树干,所有子目录都是树枝,文件和设备都是树叶,无论树枝和树叶长得多复杂,最终都归属于树干(根目录)。
举个简单的例子:我们的电脑有一块系统盘和一块数据盘,在Windows中,它们会被识别为C盘(系统盘)和D盘(数据盘),两者相互独立;而在Linux中,系统盘会直接挂载到根目录/,数据盘则会被挂载到根目录下的某个子目录(比如/mnt/data),此时访问数据盘的文件,无需切换盘符,直接进入/mnt/data即可,就像访问根目录下的普通子目录一样。
这种单根结构的优势非常明显:统一管理所有资源,简化文件查找和访问流程,尤其是在服务器场景中,多块磁盘、多个设备可以被有序组织,避免了Windows盘符混乱的问题。
[2]. 必须掌握的基础术语
理解单根目录结构的同时,需要掌握3个基础术语,这是后续学习挂载、文件存储的前提,无需深入探究底层原理,先记住核心含义即可:
>>扇区(Sector):底层硬件(硬盘、SSD)的最小寻址单位,也是硬件层的最小存储单元,常见大小为512字节(B)或4千字节(KiB)。简单来说,硬盘就是由无数个扇区组成的,所有数据最终都会存储在扇区中。
>>块(Block):文件系统层的最小分配单位,是文件系统对扇区的“分组”。由于扇区太小,直接用扇区管理文件会效率极低,因此文件系统会将多个扇区合并成一个块(常见大小为4KiB、8KiB),文件存储时,会以块为单位分配空间。比如一个10KiB的文件,在4KiB块大小的文件系统中,会占用3个块(4+4+2,最后一个块未占满,但仍会被分配给该文件)。
>>挂载(Mount):将文件系统(如磁盘分区、U盘、网络存储)与根目录树关联起来的过程。未挂载的文件系统,即使硬件连接正常,也无法被访问;只有通过挂载,将其关联到根目录下的某个空目录(称为挂载点),才能通过该目录访问文件系统中的内容。比如插入U盘后,需要将其挂载到/mnt/usb,才能通过/mnt/usb访问U盘中的文件。
[3]. Linux文件的5类分类
Linux中“一切皆文件”,但文件并非都是我们常见的文本、图片,而是分为5类,不同类型的文件用途不同,识别方法也很简单——通过ls -l命令查看文件时,最左侧的第一个字符,就是文件类型标识。
这5类文件必须能快速识别,否则后续操作中很容易出错(比如误删设备文件导致系统故障),具体分类如下:
>>普通文件(标识:-):最常见的文件类型,包括文本文件(如test.txt)、二进制文件(如/bin/ls,Linux的命令本质就是二进制文件)、日志文件(如/var/log/messages)等。普通文件可以直接读写、执行(需权限),是我们日常操作最多的文件类型。
>>目录文件(标识:d):用于存放其他文件或子目录,相当于Windows中的“文件夹”。比如/home、/etc都是目录文件,通过cd命令可以进入目录,通过ls命令可以查看目录内的内容。需要注意的是,目录文件也需要占用磁盘空间,用于存储其下文件的文件名和关联信息。
>>链接文件(标识:l):类似Windows中的快捷方式,用于关联其他文件或目录,分为软链接和硬链接(后续进阶会详细讲解)。通过ls -l查看时,会显示链接指向的原始文件路径,比如lrwxrwxrwx 1 root root 7 10月 1 10:00 test -> test.txt,表示test是test.txt的软链接。
>>设备文件(标识:b/c):Linux中硬件设备的抽象表示,所有硬件设备都以文件的形式存在于/dev目录中。其中,标识为b的是块设备(如硬盘、U盘,按块读写数据),标识为c的是字符设备(如键盘、鼠标,按字符读写数据)。比如/dev/sda1是第一个硬盘的第一个分区,/dev/null是“空设备”(写入的数据会被丢弃)。
>>特殊文件(标识:p/s):用于进程间通信,日常操作中很少直接接触。标识为p的是管道文件,用于同一主机上的进程间通信;标识为s的是套接字文件,用于网络进程间通信(如SSH服务的套接字文件)。
实操建议:打开Linux终端,输入ls -l /,查看根目录下的文件类型,对照上面的分类,逐一识别,快速熟悉不同文件类型的标识和形态。
二 重中之重:根目录下核心子目录详解
Linux根目录/下的一级子目录,其功能是固定的,无论使用的是CentOS、Ubuntu还是其他Linux发行版,这些核心子目录的作用基本一致。记住这些子目录的作用,是后续查找文件、配置系统、排查问题的基础——比如想要修改系统配置,就去/etc目录;想要查看系统日志,就去/var/log目录;想要找系统命令,就去/bin或/sbin目录。
下面重点讲解根目录下10个高频核心子目录,包括它们的作用、核心内容和使用禁忌:
[1]. /bin:系统必备二进制命令目录(所有用户可执行)
该目录存放的是Linux系统最基础、最常用的二进制命令,这些命令所有用户都可以执行,是系统正常运行的基础,缺一不可。比如我们日常使用的ls(查看目录)、cp(复制文件)、mv(移动文件)、rm(删除文件)、cat(查看文件内容)等命令,都存放在/bin目录下。
使用禁忌:禁止删除该目录下的任何文件,否则会导致系统无法正常运行(比如删除/bin/ls,就无法使用ls命令);也不要随意向该目录下添加自定义命令(建议放在/usr/local/bin目录)。
[2]. /sbin:系统管理类命令目录(仅root可执行)
该目录存放的是系统管理相关的二进制命令,主要用于系统维护、硬件管理、用户管理等,只有超级用户(root)才能执行这些命令。比如fdisk(磁盘分区)、reboot(重启系统)、shutdown(关闭系统)、useradd(创建用户)等命令,都存放在/sbin目录下。
实操注意:普通用户执行/sbin目录下的命令,会提示“权限不足”,此时需要切换到root用户(通过su - root命令),或使用sudo命令(需配置sudo权限)执行。
[3]. /etc:系统所有配置文件目录
该目录是Linux系统的“配置中心”,存放着系统、服务、用户的所有配置文件,几乎所有的系统配置操作,都需要修改该目录下的文件。比如:
- /etc/fstab:挂载配置文件,系统启动时会自动读取该文件,挂载所有配置好的文件系统;- /etc/passwd:用户信息文件,存放所有系统用户的基本信息(用户名、用户ID、家目录等);- /etc/group:用户组信息文件,存放所有系统用户组的信息;- /etc/profile:系统全局环境变量配置文件,修改该文件可以设置所有用户的环境变量;- /etc/ssh/sshd_config:SSH服务配置文件,用于配置SSH登录的端口、权限等。
使用禁忌:修改该目录下的配置文件时,一定要先备份(比如cp /etc/fstab /etc/fstab.bak),避免修改错误导致系统无法启动;不要随意删除该目录下的文件,很多配置文件是系统运行的必需文件。
[4]. /home:普通用户的家目录
该目录是所有普通用户的“个人空间”,每个普通用户在/home目录下都会有一个以自己用户名命名的子目录(比如用户user1的家目录是/home/user1)。普通用户的个人文件、配置、脚本等,都建议存放在自己的家目录下,普通用户对自己的家目录拥有完全的读写执行权限,无法直接访问其他普通用户的家目录(除非授权)。
实操建议:日常学习和操作中,不要在根目录或其他系统目录下创建、存放个人文件,避免误删系统文件,所有个人操作都在自己的家目录下进行。
[5]. /root:超级用户(root)的家目录
该目录是超级用户(root)的家目录,相当于root用户的“个人空间”,root用户的配置文件、临时文件、脚本等,都存放在这里。与普通用户的家目录不同,/root目录只有root用户有权访问,普通用户无法进入该目录(提示“权限被拒绝”)。
注意:root用户拥有系统的最高权限,可以修改、删除任何文件,操作时一定要格外谨慎,避免误操作导致系统崩溃。
[6]. /var:动态变化的文件目录(运维高频)
该目录存放的是动态变化的文件,比如日志文件、缓存文件、邮件文件、临时文件等,这些文件的大小会随着系统运行不断变化,也是服务器运维中最常关注的目录之一。
核心子目录:
- /var/log:系统日志目录,存放所有系统和服务的日志文件(如messages系统日志、secure安全日志),排查系统故障、查看服务运行状态,都需要查看该目录下的日志;- /var/cache:缓存目录,存放各种应用程序的缓存文件(如浏览器缓存、软件包缓存),可以定期清理该目录下的缓存,释放磁盘空间;- /var/spool:队列目录,存放邮件、打印任务等队列文件;- /var/tmp:临时文件目录,与/tmp类似,但文件保留时间更长,系统重启后不会自动清空。
注意:/var目录容易占满磁盘(尤其是/var/log目录的日志文件),日常运维中需要定期查看该目录的磁盘占用情况(通过df -h /var命令),及时清理无用的日志和缓存。
[7]. /tmp:临时文件目录(所有用户可读写)
该目录用于存放临时文件,所有用户都可以在该目录下创建、读写临时文件,系统重启后,该目录下的所有文件会被自动清空,因此不适合存放重要文件。
实操建议:日常测试、临时存放文件(如下载的临时安装包、测试脚本),可以放在/tmp目录下,避免占用其他目录的空间,也无需手动清理,系统会自动处理。
[8]. /mnt:手动挂载外部设备的默认目录
该目录是手动挂载外部设备(如U盘、移动硬盘、光盘)的默认挂载点,默认情况下是空目录,需要手动创建子目录作为具体的挂载点(比如挂载U盘时,创建/mnt/usb目录作为挂载点)。
实操示例:插入U盘后,通过fdisk -l命令识别U盘的设备文件(如/dev/sdb1),然后执行mkdir -p /mnt/usb创建挂载点,再执行mount /dev/sdb1 /mnt/usb,即可通过/mnt/usb访问U盘中的文件。
[9]. /dev:设备文件目录(硬件抽象)
该目录存放的是所有硬件设备的抽象文件,Linux通过这些文件来管理硬件设备,我们无需直接操作硬件,只需操作对应的设备文件,就能实现对硬件的控制。
常见设备文件(必记):
- /dev/sda:第一个SATA硬盘(如果有多个硬盘,依次为/dev/sdb、/dev/sdc);- /dev/sda1:第一个硬盘的第一个分区(分区编号从1开始);- /dev/null:空设备,写入该文件的数据会被丢弃(相当于“黑洞”),常用于丢弃无用的输出;- /dev/zero:零设备,会持续输出0,常用于创建空文件、测试磁盘读写速度;- /dev/tty:终端设备文件,对应当前的终端窗口。
使用禁忌:禁止删除、修改该目录下的设备文件,否则会导致硬件无法正常使用(比如删除/dev/sda1,会导致无法访问该分区的文件)。
[10]. /proc:虚拟文件系统目录(无实际磁盘占用)
该目录是一个虚拟文件系统,里面的文件都不占用实际的磁盘空间,而是实时反映系统的运行状态、进程信息、硬件信息等,相当于“系统的实时监控面板”。我们可以通过查看该目录下的文件,获取系统的各种信息,无需安装额外的监控工具。
常见实用文件(必记):
- /proc/cpuinfo:查看CPU的详细信息(如CPU型号、核心数、频率);- /proc/meminfo:查看内存的详细信息(如总内存、已用内存、空闲内存、缓存大小);- /proc/version:查看Linux系统的版本信息;- /proc/pid:每个进程对应一个以进程ID(pid)命名的目录,里面存放该进程的详细信息(如进程的命令、占用的内存、打开的文件),比如/proc/1是系统初始化进程(init或systemd)的目录。
实操建议:输入cat /proc/cpuinfo、cat /proc/meminfo,查看系统硬件信息,熟悉虚拟文件系统的使用方式。
三 必练实操:基础文件/目录操作命令
掌握了单根目录结构和核心子目录后,接下来就是实操——基础的文件/目录操作命令,是日常使用Linux的基础,无需死记硬背,重点是理解功能、反复实操,每天练习10分钟,3天就能熟练掌握。
下面整理了入门阶段最常用、最高频的命令,每个命令都标注了核心功能和常用参数,结合实操场景讲解,新手可以跟着一步步练习。
[1]. 目录操作命令(核心4个)
>>cd:切换目录
核心功能:切换当前工作目录,语法为cd 目录路径,常用参数和场景如下:
- cd ~:切换到当前用户的家目录(比如普通用户切换到/home/user1,root用户切换到/root),快捷键,非常实用;- cd ..:切换到上一级目录(比如当前在/home/user1/test,执行后切换到/home/user1);- cd -:切换到上一次所在的目录(比如先从/home切换到/etc,执行后切换回/home);- cd /:切换到根目录;- cd /etc:切换到/etc目录(绝对路径,从根目录开始的路径);- cd test:切换到当前目录下的test子目录(相对路径,相对于当前工作目录的路径)。
实操练习:依次执行cd /、cd etc、cd ..、cd ~,感受绝对路径和相对路径的区别,熟悉切换逻辑。
>>ls:列出目录内容(查看文件/目录)
核心功能:列出当前目录或指定目录下的文件和目录,语法为ls [参数] 目录路径,常用参数如下(重点记3个):
- ls:默认列出当前目录下的文件和目录(不显示隐藏文件,隐藏文件以.开头);- ls -l:以长格式列出,显示文件类型、权限、属主、大小、修改时间等详细信息(最常用,简称“ll”,很多Linux系统会将ll设置为ls -l的别名);- ls -a:显示所有文件和目录,包括隐藏文件(如.bashrc、.ssh等);- ls -li:显示文件和目录的inode号(后续进阶会用到,提前熟悉)。
实操练习:执行ls -l /,查看根目录下所有子目录的详细信息,对照前面讲的文件类型,识别每个目录的类型(标识为d);执行ls -a ~,查看自己家目录下的隐藏文件。
>>mkdir:创建目录
核心功能:创建新的目录,语法为mkdir [参数] 目录路径,常用参数只有1个,却非常实用:
- mkdir test:在当前目录下创建名为test的目录;- mkdir -p /home/user1/test/a/b:递归创建多级目录(如果test、a目录不存在,会自动创建),无需手动逐级创建,非常高效。
实操练习:执行mkdir -p ~/test/linux/file,然后通过cd ~/test/linux/file验证目录是否创建成功。
>>rmdir:删除空目录
核心功能:删除空目录,语法为rmdir 目录路径,注意:该命令只能删除空目录,如果目录下有文件或子目录,会提示“无法删除,目录非空”。
补充:删除非空目录,需要使用rm -rf 目录路径(-r表示递归删除,-f表示强制删除),但该命令非常危险,尤其是rm -rf /,会删除根目录下的所有文件,导致系统崩溃,生产环境和日常学习中一定要谨慎使用!
实操练习:执行mkdir test1,然后执行rmdir test1,验证空目录删除;执行mkdir -p test2/a,尝试执行rmdir test2,观察报错信息。
[2]. 文件操作命令(核心6个)
>>touch:创建空文件,或修改文件时间戳
核心功能:有两个常用场景,一是创建空文件,二是修改文件的访问时间、修改时间(无需深入理解时间戳,重点掌握创建空文件的用法)。
- touch test.txt:在当前目录下创建名为test.txt的空文件;- touch /home/user1/test2.txt:在指定目录下创建空文件;- touch test.txt:如果test.txt已经存在,执行该命令会修改文件的时间戳(不改变文件内容)。
>>cp:复制文件/目录
核心功能:复制文件或目录到指定路径,语法为cp [参数] 源文件/目录 目标路径,常用参数:
- cp test.txt /home/user1:将当前目录下的test.txt复制到/home/user1目录下;- cp -r test /home/user1:复制目录(-r表示递归复制,必须加上,否则无法复制目录),将当前目录下的test目录及内容复制到/home/user1;- cp -p test.txt /home/user1:复制文件时,保留文件的原始属性(如权限、修改时间),默认情况下,复制后的文件属性会变成当前用户的属性。
实操练习:执行touch test.txt,然后执行cp test.txt ~/test,再进入~/test目录,查看文件是否复制成功。
>>mv:移动/重命名文件/目录
核心功能:有两个常用场景,一是移动文件/目录到指定路径,二是重命名文件/目录,语法为mv 源文件/目录 目标路径/新名称:
- mv test.txt ~/test:将当前目录下的test.txt移动到~/test目录下;- mv test.txt test_new.txt:将test.txt重命名为test_new.txt(同一目录下移动,就是重命名);- mv test ~/test_new:将test目录移动到~/目录下,并命名为test_new。
注意:mv命令与cp命令的区别在于,mv移动后,源文件/目录会消失,而cp复制后,源文件/目录仍然存在。
>>rm:删除文件/目录
核心功能:删除文件或目录,语法为rm [参数] 文件/目录路径,常用参数:
- rm test.txt:删除当前目录下的test.txt文件,会提示“是否删除”,输入y确认删除;- rm -f test.txt:强制删除文件,不提示确认(适合删除大量文件,避免反复确认);- rm -rf test:强制删除test目录及目录下的所有文件/子目录,不提示确认(危险!谨慎使用)。
避坑提醒:绝对不要在root用户下执行rm -rf /,也不要随意使用rm -rf *(删除当前目录下的所有文件/目录),避免误删重要文件。
>>cat/more/less:查看文件内容
三个命令都是用于查看文件内容,核心区别在于适用场景(文件大小):
- cat test.txt:一次性显示文件的所有内容,适合查看小文件(几行、几十行),如果文件太大,内容会快速滚动,无法看清;- more test.txt:分页显示文件内容,按空格键翻页,按q键退出,适合查看中等大小的文件;- less test.txt:分页显示文件内容,支持上下箭头翻页、搜索(输入/关键词搜索,按q键退出),适合查看大文件(如日志文件),功能最强大。
实操练习:执行cat /proc/cpuinfo,查看CPU信息;执行less /var/log/messages,查看系统日志,练习翻页和搜索功能。
>>head/tail:查看文件头部/尾部内容
核心功能:查看文件的前几行(head)或后几行(tail),适合查看日志文件(比如查看最新的日志内容),常用参数:
- head -n 10 test.txt:查看test.txt文件的前10行(-n后面跟行数,默认前10行);- tail -n 10 test.txt:查看test.txt文件的后10行;- tail -f /var/log/messages:实时监控日志文件的最新内容(-f表示实时跟踪,按Ctrl+C退出),运维中非常常用,比如监控服务运行日志。
[3]. 入门实操综合练习
结合上面的命令,完成以下综合练习,巩固所学内容:
1. 切换到根目录,查看根目录下的所有子目录和文件(ls -l /);
2. 切换到自己的家目录,创建一个名为linux_study的目录;
3. 进入linux_study目录,创建一个名为file_system.txt的空文件;
4. 查看file_system.txt文件的详细信息(ls -l);
5. 将file_system.txt复制到/tmp目录下;
6. 将linux_study目录重命名为linux_file;
7. 删除/tmp目录下的file_system.txt文件;
8. 删除linux_file目录(确保目录为空)。
总结:入门的关键是“理解+实操”
Linux文件系统入门,不要急于学习更复杂的内容,先吃透单根目录结构、核心子目录、基础操作命令这3个重点,摆脱Windows思维,建立Linux的认知逻辑,后续学习inode、权限、挂载等进阶内容时,就会事半功倍。
建议每天花10-15分钟实操,熟悉命令的用法,遇到不懂的问题,多输入命令尝试,多查看系统反馈,慢慢就能找到Linux的使用规律。下一篇帖子,我们将进入进阶阶段,详细讲解inode与文件存储的核心原理,进一步深入Linux文件系统的底层逻辑。
以上为全文内容。

这里是女程序员的笔记本
15年+嵌入式软件工程师兼二胎宝妈
分享读书心得、工作经验,自我成长和生活方式。
希望我的文字能对你有所帮助