Linux目录理解
前言
最近在复习linux,发现有些目录总是忘记内容,发现有些还是得从原义和实际例子去理解会记忆深刻些。以下是个人的一些理解
Linux目录
常见的Linux下的目录如下:

1. 根目录 / (Root Directory)
- 英文含义:
/是文件系统的根(root)目录。它是所有文件和目录的起点,类似于树的根,所有其他文件夹和文件都是从这里延伸出来的。 - 作用:作为文件系统的根目录,它是所有路径的起始点。
- PS:根目录在系统启动初期可能是只读挂载的,普通用户无法直接在根目录下创建文件,只有管理员(root 用户)有权限操作。
- 实际例子:运行
ls /可以列出根目录下的所有子目录
2. /bin (Binary Files)
-
英文含义:
bin是 “binary”(二进制)的缩写,表示存放可执行程序的地方。这些二进制文件是操作系统和用户交互的基本命令。 -
作用:包含启动和运行操作系统所需的基本命令。这里的命令是系统和用户都可以使用的,甚至在单用户模式下也可以执行。
-
常见文件:
/bin/ls:列出当前目录下的文件和文件夹(ls是 “list” 的缩写)。/bin/cp:复制文件或目录(cp是 “copy” 的缩写)。/bin/mv:移动或重命名文件或目录(mv是 “move” 的缩写)。/bin/rm:删除文件或目录(rm是 “remove” 的缩写)。
-
PS:在现代 Linux 发行版中,
/bin有时会符号链接到/usr/bin,这是因为 Filesystem Hierarchy Standard (FHS) 的演进,旨在统一二进制文件存放位置。 -
实际例子:运行
which ls会返回/bin/ls,告诉你ls命令的具体路径。

3. /sbin (System Binary Files)
- 英文含义:
sbin是 “system binary”(系统二进制)的缩写,存放的是需要管理员权限来执行的系统管理命令。 - 作用:包含系统管理和维护所需的命令,普通用户一般不需要使用这些命令,除非是系统管理员。
- 常见文件:
/sbin/init:系统初始化进程,是系统启动时运行的第一个程序。/sbin/reboot:重启系统的命令。/sbin/shutdown:关闭系统的命令。
- PS:这些命令通常需要超级用户权限(
sudo),普通用户尝试直接运行会提示权限不足。 - 实际例子:执行
sudo /sbin/fdisk -l可以列出磁盘分区信息(需要 root 权限)。这些命令通常用于系统维护和调试。

4. /etc (Etcetera - Configuration Files)
- 英文含义:
etc是 “et cetera”(等等)的缩写,虽然这个名字没有直接说明它的内容,但通常用于存放系统配置文件(历史遗留问题,遗传unix)。 - 作用:包含所有系统和程序的配置文件。通常会在这里配置一些与程序、用户、服务等相关的设置。
- 常见文件:
/etc/passwd:存储用户账户信息的文件。这里包括每个用户的用户名、密码、UID 和 GID 等信息。/etc/fstab:用于系统启动时挂载文件系统的配置文件。/etc/hostname:存储系统主机名的文件。/etc/network/interfaces:配置网络接口的文件。
- PS:
/etc不仅是系统配置的中心,许多服务的配置文件也集中在这里,例如 Apache、Nginx 或 SSH。 - 常见文件补充:
/etc/resolv.conf:定义 DNS 服务器地址,用于网络域名解析。/etc/crontab:系统级别的定时任务配置文件。
- 实际例子:编辑
/etc/hosts可以添加本地主机名解析,例如127.0.0.1 mylocalserver。你可以在这些配置文件中修改系统和服务的行为。
5. /home (Home Directories)
- 英文含义:
home目录存放的是每个用户的家目录。这里是每个用户存放个人文件的地方。 - 作用:存放用户个人文件,会在这里存放自己的代码、文档等文件。
- 常见文件:
/home/username:每个用户的个人目录,username是你的用户名。例如,如果你的用户名是oy,你的家目录就是/home/oy。
- PS:用户的家目录通常包含隐藏文件(以
.开头),如.bashrc或.profile,用于配置用户的 shell 环境。 - 实际例子:在
/home/username下运行ls -a可以看到.bash_history,记录用户执行过的命令历史。
6. /var (Variable Files)
- 英文含义:
var是 “variable”(可变的)的缩写,表示存放那些内容经常变化的文件。通常包括日志、缓存、队列等。 - 作用:存放程序运行时产生的动态数据,比如日志文件、缓存文件等。
- 常见文件:
/var/log:存放日志文件的目录。可以在这里查看系统和应用程序的日志信息,用来调试程序。/var/tmp:存放临时文件的目录,这些文件在系统重启后可能还会存在。/var/spool:存放程序任务队列文件,比如邮件队列、打印队列等。
- PS:
/var的内容通常与系统运行时间相关,占用空间可能会随时间增长,因此需要定期清理(如日志文件)。 - 常见文件补充:
/var/mail:存放用户邮件的目录(如果系统配置了邮件服务)。
- 实际例子:运行
tail -f /var/log/syslog可以实时查看系统日志,用于调试。
7. /lib 和 /lib64 (Libraries)
- 英文含义:
lib是 “library”(库)的缩写,包含了程序运行所依赖的共享库文件。 - 作用:存放系统和应用程序使用的共享库文件。共享库文件包含了程序运行时需要的函数、代码等。
- 常见文件:
/lib/libc.so:C 标准库的共享库文件,很多程序都依赖它。/lib64/libc.so:64 位版本的 C 标准库共享库文件。
- PS:
/lib64只存在于 64 位系统上,用于区分 32 位和 64 位库文件。32 位库可能存放在/lib32。 - 实际例子:运行
ldd /bin/ls可以查看ls命令依赖的共享库文件路径。

8. /tmp (Temporary Files)
- 英文含义:
tmp是 “temporary”(临时的)的缩写,表示存放临时文件的地方。 - 作用:用于存储系统或应用程序在运行过程中产生的临时文件。通常这些文件不会永久保留,系统重启后有时会被清除。
- 常见文件:
/tmp:存放临时文件的目录,程序在运行时可能会创建文件存放在这里。比如安装程序临时解压的文件、应用程序的缓存文件等。
- PS:
/tmp的内容通常由系统服务(如tmpfiles.d)或重启时自动清理,清理规则可能在/etc/tmpfiles.d/中定义。 - 实际例子:运行
echo "test" > /tmp/testfile创建临时文件,重启后检查是否被清除。在处理临时数据时,可能会使用这个目录来存放文件,确保数据不会占用永久存储空间。
9. /dev (Device Files)
- 英文含义:
dev是 “devices”(设备)的缩写,表示设备文件的目录。 - 作用:存放所有设备文件,这些设备文件让用户和应用程序可以与硬件设备进行交互。设备文件可以是硬盘、键盘、显示器、串口等设备的接口。
- 常见文件:
/dev/sda:表示系统中的第一个硬盘。/dev/tty:表示终端设备,用于用户与系统交互的控制台。/dev/null:空设备,写入它的所有数据都会丢失。常用它来丢弃不需要的输出。
- PS:Linux 遵循“一切皆文件”的哲学,设备文件分为字符设备(如
/dev/tty)和块设备(如/dev/sda)。 - 常见文件补充:
/dev/random和/dev/urandom:生成随机数的伪设备文件,常用于加密或测试。
- 实际例子:运行
cat /dev/urandom | head -c 10可以生成 10 字节的随机数据。常常会通过设备文件来与硬件设备进行交互,例如读写硬盘,控制外部设备等。
10. /mnt (Mount Points)
- 英文含义:
mnt是 “mount”(挂载)的缩写,表示挂载点的目录。 - 作用:用于临时挂载文件系统的目录。当你挂载一个磁盘或其他文件系统时,它的内容会显示在
/mnt下的子目录中。 - 常见文件:
/mnt:这个目录通常为空,系统管理员可以在这里挂载外部存储设备或分区。比如,挂载一个 USB 驱动器时,可能会在/mnt/usb下显示该驱动器的文件系统。
- PS:与
/mnt类似,/media也常用于挂载,但/media更倾向于用户手动挂载的设备(如 U 盘)。 - 实际例子:运行
sudo mount /dev/sdb1 /mnt将第二个硬盘的第一个分区挂载到/mnt。有时会使用这个目录来挂载外部存储或进行调试。
11. /opt (Optional Add-on Software Packages)
- 英文含义:
opt是 “optional”(可选的)的缩写,表示可选的附加软件包。 - 作用:存放可选的第三方软件包及其相关文件。与
/usr目录类似,但/opt通常用于那些不属于系统基础安装的软件。 - 常见文件:
/opt:存放附加软件的目录。比如你安装了一些额外的第三方应用程序,它们通常会存放在这里。
- PS:
/opt中的软件通常自成体系,包含自己的子目录(如/opt/appname/bin),便于独立管理。 - 实际例子:安装 Google Chrome 时,它可能被放置在
/opt/google/chrome。一般会在这里安装一些额外的应用程序或库,以便开发自己的应用。
12. /usr (User Programs)
- 英文含义:
usr是 “user”(用户的)或 “Unix System Resources”(Unix 系统资源)的缩写。 - 作用:存放系统和应用程序的可执行文件、库文件以及共享数据等。这个目录包含了大部分的用户程序和资源文件。
- 常见文件:
/usr/bin:存放用户应用程序的命令。/usr/lib:存放系统和程序使用的库文件。/usr/share:存放共享数据文件,如文档、图标、语言文件等。/usr/local:存放本地安装的应用程序,通常由管理员手动安装,不属于系统默认软件。
- PS:
/usr是系统安装后的大本营,通常占用较多磁盘空间。/usr/local是用户自定义安装的首选位置,避免与系统包管理器冲突。 - 常见文件补充:
/usr/include:存放 C/C++ 的头文件,编译程序时需要。

- 实际例子:运行
/usr/bin/python3启动系统安装的 Python 解释器。通常会在/usr下存放安装的软件包和共享资源。
13. /srv (Service Data)
- 英文含义:
srv是 “service”(服务)的缩写,表示服务数据的目录。 - 作用:存放服务提供的数据,通常是系统服务或者用户服务的文件。例如,网站的页面文件、数据库文件等。
- 常见文件:
/srv/www:存放 Web 服务器的数据文件,如网站的文件。/srv/ftp:存放 FTP 服务器的数据文件。
- PS:
/srv的使用因系统而异,有些发行版可能不默认使用,管理员可以根据需要自定义。 - 实际例子:运行 Nginx 时,可以将网站文件放在
/srv/www/html。可能会在这里放置由服务器提供的数据或文件,如网站文件、数据库文件等。
14. /sys (System Information)
- 英文含义:
sys是 “system”(系统)的缩写,表示系统信息的目录。 - 作用:提供关于系统内核和硬件的实时信息。这里存放了很多虚拟文件,它们代表了系统的状态,可以通过读取这些文件来获取系统的运行状态。
- 常见文件:
/sys/class:存放系统硬件的信息,如网络设备、存储设备等。/sys/fs:存放文件系统的信息,如挂载的文件系统。
- PS:
/sys是 sysfs 文件系统的一部分,与/proc类似,但更专注于硬件和内核参数。
15. /proc (Process Information)
- 英文含义:
proc是 “process”(进程)的缩写,表示进程信息的目录。 - 作用:提供关于运行中的进程、内核等信息。这个目录下的文件是虚拟文件,它们不存储数据,而是内核实时生成的数据。可以用它来监控系统状态,获取进程信息。
- 常见文件:
/proc/cpuinfo:显示 CPU 信息。/proc/meminfo:显示内存使用情况。/proc/[pid]:每个进程都有一个对应的目录,[pid]是进程 ID。你可以在这里查看进程的内存、CPU 使用情况等。
- PS:
/proc是 procfs 文件系统,内容完全动态生成,占用内存而非磁盘空间。 - 常见文件补充:
/proc/uptime:显示系统运行时间(秒)和空闲时间。
- 实际例子:运行
cat /proc/self/stat查看当前进程(即cat命令本身)的状态。可以通过/proc目录获取系统资源的详细信息,用于性能监控或调试。

16. /boot (Boot Loader Files)
- 英文含义:
boot是 “bootstrap”(引导)的缩写,表示系统启动相关文件。 - 作用:存放启动加载程序(bootloader,如 GRUB)和内核映像文件。
- 常见文件:
/boot/vmlinuz:压缩的 Linux 内核文件。/boot/grub/grub.cfg:GRUB 引导配置文件。
17. /run (Runtime Data)
- 英文含义:
run表示运行时数据。 - 作用:存放系统运行时的临时文件(如 PID 文件或锁文件),通常在重启后清空。
- 常见文件:
/run/lock:存放锁文件,防止多个进程冲突。
- 实际例子:运行
cat /run/mysqld/mysqld.pid查看 MySQL 服务的进程 ID。

18. /lost+found
- 英文含义:表示“丢失并找到”的文件。
- 作用:在文件系统检查(如
fsck)后,损坏或未链接的文件会存放在这里。
建议
自己手动查看一下目录
相关文章:
Linux目录理解
前言 最近在复习linux,发现有些目录总是忘记内容,发现有些还是得从原义和实际例子去理解会记忆深刻些。以下是个人的一些理解 Linux目录 常见的Linux下的目录如下: 1. 根目录 / (Root Directory) 英文含义:/ 是文件系统的根…...
可视化图解算法:链表中倒数(最后)k个结点
1. 题目 描述 输入一个长度为 n 的链表,设链表中的元素的值为ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链表。 数据范围:0≤n≤105,0 ≤ai≤109,0 ≤k≤109 要求&am…...
Swift 并发中的任务让步(Yielding)和防抖(Debouncing)
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
@SpringBootApplication
SpringBootApplication拓展 一. SpringBootConfiguration注解 是SpringBoot的注解, 标识一个类为配置类, 与Configration功能一致 run方法初始化了SpringBootConfiguration注解 注解源码 Target(ElementType.TYPE)//类型 Retention(RetentionPolicy.RUNTIME)//生命周期 Docu…...
什么是状态管理?有何种方式可以实现?它们之间有什么区别?
目录 一、状态管理的核心概念 二、常见状态管理方案及对比 1. 基础方案:setState 2. 官方推荐:Provider 3. 事件驱动:Bloc (Business Logic Component) 4. 响应式增强:Riverpod 5. 轻量级全能库:GetX 三、方案对比与选型指南 四、实战建议 在 Flutter 中,状态管…...
HW基本的sql流量分析和wireshark 的基本使用
前言 HW初级的主要任务就是看监控(流量) 这个时候就需要我们 了解各种漏洞流量数据包的信息 还有就是我们守护的是内网环境 所以很多的攻击都是 sql注入 和 webshell上传 (我们不管对面是怎么拿到网站的最高权限的 我们是需要指出它是…...
docker-compose install nginx(解决fastgpt跨区域)
CORS前言 CORS(Cross-Origin Resource Sharing,跨源资源共享)是一种安全措施,它允许或拒绝来自不同源(协议、域名、端口任一不同即为不同源)的网页访问另一源中的资源。它的主要作用如下: 同源策略限制:Web 浏览器的同源策略限制了从一个源加载的文档或脚本如何与另一…...
设计模式(创建型)-单例模式
摘要 在软件开发的世界里,设计模式是开发者们智慧的结晶,它们为解决常见问题提供了经过验证的通用方案。单例模式作为一种基础且常用的设计模式,在许多场景中发挥着关键作用。本文将深入探讨单例模式的定义、实现方式、应用场景以及可…...
Leetcode 刷题笔记1 图论part01
图论的基础知识: 图的种类: 有向图(边有方向) 、 无向图(边无方向)、加权有向图(边有方向和权值) 度: 无向图中几条边连接该节点,该节点就有几度࿱…...
鸿蒙NEXT开发问题大全(不断更新中.....)
目录 问题1:鸿蒙NEXT获取华为手机的udid 问题2:[Fail]ExecuteCommand need connect-key? 问题3:测试时如何安装app包 问题1:鸿蒙NEXT开发获取华为手机的udid hdc -t "设备的序列号" shell bm get --udid 问题2&…...
分享一个项目中遇到的一个算法题
需求背景: 需求是用户要创建一个任务计划在未来执行,要求在创建任务计划的时候判断选择的时间是否符合要求,否则不允许创建,创建的任务类型有两种,一种是单次,任务只执行一次;另一种是周期&…...
TI的Doppler-Azimuth架构(TI文档)
TI在AWR2944平台上推出新的算法架构,原先的处理方式是做完二维FFT后在RD图上做CFAR检测,然后提取各个通道数据做测角。 Doppler-Azimuth架构则是做完二维FFT后,再做角度维FFT,生成Doppler-Azimuth频谱图,然后在该频谱图…...
电子邮件常用协议技术详解与C++实践(SMTP POP3 IMAP)
一、核心协议概览 协议端口(明文/加密)核心功能数据同步方式典型场景SMTP25 / 587邮件发送单向传输客户端提交邮件POP3110 / 995邮件下载单向同步单设备离线阅读IMAP143 / 993邮件管理双向同步多设备实时同步 二、协议深度解析 1. SMTP(简单…...
机器学习算法:一文掌握 K近邻算法 的详细用法(2个案例可直接运行)
文章目录 一、KNN 算法概述1.1 算法原理1.2 KNN 的优缺点1.3 K 值的选择 二、Python 实现 KNN 案例2.1 使用 KNN 算法进行手写数字识别2.2 使用 Python 实现 KNN 分类 三、总结 KNN(K-Nearest Neighbors,K近邻算法) 是一种简单且常用的分类和…...
设计C语言的单片机接口
一、主要内容 (一)控制引脚 1、定义管脚 // 定义管脚的结构体 struct pin{ int id; // 管脚编号 int mode; // 模式,输入为1,输出为0 int pull; // 输入电阻 int driver; // 功率 } 2、输出电平 语法: void pin_output(s…...
[从零开始学习JAVA] Stream流
前言: 本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda 匿名内部类 方法引用相…...
「自动驾驶的数学交响曲:线性代数、微积分与优化理论的深度共舞」—— 解析人工智能背后的高阶数学工具链
引言 自动驾驶系统是数学工具链的集大成者。从传感器数据的多维空间映射到控制指令的生成,每一步都隐藏着线性代数、微积分、概率论和优化理论的精妙配合。本文将构建一个数学模型完整的自动驾驶案例,结合Python代码实现,揭示以下核心数学工具: 线性代数:张量运算与特征空…...
调试 Rust + WebAssembly 版康威生命游戏
1. 启用 Panic 日志 1.1 让 Panic 信息显示在浏览器控制台 如果 Rust 代码发生 panic!(),默认情况下不会在浏览器开发者工具中显示详细的错误信息。这使得排查问题变得困难。 我们可以使用 console_error_panic_hook 这个 Rust crate,将 Panic 信息打…...
VSCode通过SSH远程登录Windows服务器
系列 1.1 VSCode通过SSH远程登录Windows服务器 1.2 VSCode通过SSH免密远程登录Windows服务器 文章目录 系列1 准备工作2 远程服务器配置2.1 安装SSH服务器2.2 端口 3 本地电脑配置3.1 安装【Remote - SSH】。3.2 登录 1 准备工作 本地电脑Windows 11,已安装VS Cod…...
qt下载和安装教程国内源下载地址
qt不断在更新中,目前qt6日渐成熟,先前我们到官方下载或者国内镜像直接可以下载到exe文件安装,但是最近几年qt官方似乎在逐渐关闭旧版本下载通道,列为不推荐下载。但是qt5以其广泛使用和稳定性,以及积累大量代码使得qt5…...
使用htool工具导出和导入Excel表
htool官网 代码中用到的hool包里面的excel工具ExcelUtil 1. 引入依赖 <!-- Java的工具类 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version></dependency>&l…...
mysql 到 doris 挪移数据
工具datax..... 下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 下载以后解压:tar -xvzf datax.tar.gz 然后,理论上就可以直接使用了。但是,datax本身是python2写的,如果需要python3…...
Springboot中的@ConditionalOnBean注解:使用指南与最佳实践
在使用Spring Boot进行开发时,大家应该都听说过条件注解(Conditional Annotations)。其中的ConditionalOnBean注解就很有趣,它帮助开发者在特定条件下创建和注入Bean,让你的应用更加灵活。今天就来聊聊这个注解的使用场…...
ubuntu系统下添加pycharm到快捷启动栏方法
一、背景 之前在ubuntu系统下使用pycharm时,总是要进入/home/dlut/pycharm-community-2022.1/bin文件夹下,然后终端执行命令下面的命令才可修改代码: ./pycharm.sh为了以后方便,这里给出添加pycharm到快捷启动栏的方法 二、添加…...
开源:LMDB 操作工具:lmcmd
目录 什么是 LMDB为什么编写 lmcmd安装方法如何使用 连接数据库命令列表 小结 1. 什么是 LMDB LMDB(Lightning Memory-Mapped Database)是一种高效的键值存储数据库,基于内存映射(memory-mapping)技术,提供…...
阿里云底层使用的虚拟化技术
阿里云底层使用的虚拟化技术主要是KVM([Kernel-based Virtual Machine)。KVM是一种基于内核的虚拟机技术,它允许Linux内核直接管理虚拟机的创建和运行,提供高效的虚拟化解决方案12。 KVM技术的特点和应用场景 KVM具有以下…...
angular中的路由传参
目录 一、矩阵参数 一、矩阵参数 在angular中传参时可以使用矩阵参数,即直接通过变量值的形式在地址中体现,但需要注意参数的使用范围为当前路径段,而不是全局的查询参数。 const params {name: lhhh,age: 18,list: [{ name: htt }],}; //先…...
AI时代下的心理咨询师新利器:心理咨询小程序
在AI技术日新月异的今天,心理咨询师们也需要与时俱进,借助新型工具来提升咨询效率和服务质量。正如一位优秀的厨师离不开一把锋利的菜刀,心理咨询师同样需要一款得力助手来辅助其工作。而心理咨询小程序,正是这样一款应运而生的工…...
垃圾分类--环境配置
写在前面: 如果你们打这届比赛时,还有我们所保留的内存卡,那么插上即可运行(因为内存卡里我们已经配置好所有的环境) 本文提供两种环境的配置 一种是基于yolov8:YOLOv8 - Ultralytics YOLO Docshttps://d…...
每日一题--计算机网络
一、基础概念类问题 1. TCP 和 UDP 的区别是什么? 回答示例: TCP:面向连接、可靠传输(通过三次握手建立连接,丢包重传)、保证数据顺序(如文件传输、网页访问)。 UDP:无…...
