当前位置:首页>Linux>Linux目录结构——文件都在哪

Linux目录结构——文件都在哪

  • 2026-10-11 06:05:06
Linux目录结构——文件都在哪

发完 Wine 安装攻略,有朋友在留言区问了个很典型的问题:

Linux的目录结构是怎么样的,怎么找到换字体的目录和Wine的目录。

在Windows 下 C:\Windows\Fonts 是字体目录,C:\Program Files 是软件目录;但到了 Linux,文件散在各处,半天找不到北。

今天把 Linux 的目录结构拿出来聊一下,知道文件都在哪,后面装软件、找配置、排查问题都会顺很多。

先搞懂一个核心概念:Linux 没有"盘符"

Windows 的思维是按盘符分区:

  • C:\
     系统盘
  • D:\
     数据盘
  • E:\
     光驱或U盘

Linux 的思维完全不同——只有一棵树,所有东西都挂在 /(根目录)下面。不管是系统盘、数据盘、U盘、移动硬盘,全部"挂载"到这棵树的某个分支上。

💡 提示: 刚从 Windows 过来的人,这一步最容易懵。记住:Linux 下没有 C:\D:\E:\,只有 / 和下面的各种目录。

一张表看懂根目录下的所有文件夹

/ 根目录下有一堆文件夹,每个都有固定用途:

目录
全称/含义
相当于Windows的什么
新手需要关注吗?
/home
家目录总入口
C:\Users
⭐⭐⭐⭐⭐ 最重要!你的文件全在这
/usr
Unix System Resources
C:\Program Files
⭐⭐⭐⭐ 软件装在这
/etc
Editable Text Configuration
C:\Windows\System32\config
⭐⭐⭐ 配置文件集中地
/var
Variable data
各种日志和可变数据
⭐⭐⭐ 日志排查时来这
/tmp
Temporary
C:\Windows\Temp
⭐ 自动清空,不用管
/opt
Optional
大型第三方软件(如Chrome)
⭐⭐ 有些软件装这里
/root
root用户的家目录
C:\Users\Administrator
⭐ 普通用户进不去
/bin
Binaries
基础命令(ls/cp等)
⭐ 系统命令位置
/sbin
System Binaries
系统管理命令
⭐ 管理员命令
/lib
Libraries
C:\Windows\System32\*.dll
⭐ 程序依赖库
/boot
启动相关文件
Windows的启动分区
❌ 别动
/dev
Devices
C:\Windows\System32\DriverStore
❌ 设备文件,别动
/proc
进程信息(虚拟)
任务管理器底层数据
❌ 虚拟文件系统
/sys
系统信息(虚拟)
设备管理器底层数据
❌ 虚拟文件系统
/srv
Service data
服务器数据
❌ 一般桌面用不到
/lost+found
文件系统修复残留
磁盘检查后的碎片
❌ 不用管

⚠️ 注意:/bin、/lib、/sbin 在现代 Ubuntu/Debian 里大多是链接到 /usr/bin、/usr/lib、/usr/sbin 的,不用纠结它们的区别。

~ 家目录——你真正的"主战场"

这是新手最应该先搞懂的概念。

~ 是家目录的缩写,类似于 Windows 的 C:\Users\你的用户名。

以用户名 admi 为例:

~        = /home/admi
~/桌面   = /home/admi/Desktop(中文环境)或 /home/admi/Desktop(英文环境)
~/下载   = /home/admi/Downloads
~/文档   = /home/admi/Documents

家目录里的隐藏文件夹(重点!)

在 Linux 里,以 . 开头的文件或文件夹是隐藏的。Windows 里要勾选"显示隐藏文件"才能看到,Linux 里 ls 命令默认也不显示,要加 -a 参数:

# 查看家目录下所有文件(包括隐藏的)
ls -la ~

这些隐藏文件夹,就是你的个人配置中心:

隐藏文件夹
用途
举例
~/.config/
大部分软件的个人配置
~/.config/google-chrome/
(Chrome配置)
~/.local/
用户级程序数据
~/.local/share/
 下放字体、图标等
~/.cache/
软件缓存
~/.cache/google-chrome/
(Chrome缓存)
~/.bashrc
Bash shell 配置文件
每次开终端自动加载
~/.profile
登录时自动执行
设置环境变量
~/.ssh/
SSH密钥存放处
~/.ssh/id_rsa
(私钥)
~/.gitconfig
Git 全局配置
用户名、邮箱在这里

💡 提示: 字体目录就在 ~/.local/share/fonts/ 下面(用户级)。后面详细讲。

字体到底装在哪?——/usr/share/fonts vs ~/.local/share/fonts

Linux 的字体有两个层级:

系统级字体目录(所有用户都能用)

/usr/share/fonts/
├── truetype/      ← TrueType字体(.ttf)通常在这
│   ├── debian/     ← Debian系自带字体
│   ├── liberation/  ← 开源替代字体
│   └── wqy/        ← 文泉驿字体
└── opentype/     ← OpenType字体(.otf)

安装方法: 把 .ttf 文件复制到对应目录,然后刷新字体缓存:

# 系统级安装(需要sudo)
sudocp ~/下载/我的字体.ttf /usr/share/fonts/truetype/
sudo fc-cache -fv

用户级字体目录(只给自己用,推荐!)

~/.local/share/fonts/    ← 旧版路径(兼容)
~/.fonts/                ← 更旧的路径(不推荐)

安装方法: 直接复制,不需要 sudo,刷新缓存:

# 用户级安装(推荐,不需要sudo)
mkdir -p ~/.local/share/fonts/
cp ~/下载/我的字体.ttf ~/.local/share/fonts/
fc-cache -fv

# 验证字体是否安装成功
fc-list | grep "我的字体"

💡 提示: 优先用用户级安装(~/.local/share/fonts/),不需要 sudo,重装系统也不会丢(家目录单独分区的话)。

对比项
系统级 /usr/share/fonts/
用户级 ~/.local/share/fonts/
权限
需要 sudo
不需要
影响范围
所有用户
仅当前用户
重装系统
会丢失
家目录独立分区则保留
推荐度
⭐⭐
⭐⭐⭐⭐⭐

Wine 的目录在哪?——~/.wine 和 Bottles 的瓶子

默认 Wine 前缀目录

Wine 创造一个"虚拟 Windows 环境",默认在:

~/.wine/
├── drive_c/              ← 虚拟C盘
│   ├── windows/
│   │   ├── Fonts/       ← ← ← 这就是Wine的字体目录!
│   │   └── system32/
│   ├── Program Files/    ← Windows软件装这
│   └── users/
│       └── 你的用户名/
├── dosdevices/           ← 磁盘映射
└── system.reg            ← Wine注册表

Wine 字体目录就是:~/.wine/drive_c/windows/Fonts/

把 Windows 字体(比如 msyh.ttf 微软雅黑)复制进去,Wine 运行的软件就能用上中文字体了:

# 把微软雅黑复制到Wine字体目录
cp ~/下载/msyh.ttf ~/.wine/drive_c/windows/Fonts/

自定义 WINEPREFIX(多个隔离环境)

你可能不想把所有软件都装在一个 ~/.wine 里,可以自定义前缀:

# 创建一个独立的Wine环境
WINEPREFIX=~/.wine-wechat winecfg

# 之后所有操作都针对这个独立环境
WINEPREFIX=~/.wine-wechat wine ~/下载/WeChatSetup.exe

此时字体目录变成:~/.wine-wechat/drive_c/windows/Fonts/

Bottles 的瓶子目录

如果用的是 Bottles(我们上一篇讲的图形化工具),每个"瓶子"是独立目录:

~/.var/app/com.usebottles.Bottles/data/bottles/bottles/
├── my-game/          ← 你创建的某个瓶子
│   └── drive_c/
│       └── windows/
│           └── Fonts/    ← Bottles瓶子的字体目录
└── wechat/
    └── drive_c/
        └── windows/
            └── Fonts/

⚠️ 注意: Flatpak 版 Bottles 的路径在 ~/.var/app/ 下面,这是 Flatpak 的沙箱机制,不是 Bug。

/usr vs /usr/local vs /opt——软件到底装哪了?

这是新手最容易困惑的问题之一。同一个软件,怎么 /usr/bin 里有,/usr/local/bin 里也有?

目录
用途
谁装的
举例
/usr/bin/
系统包管理器(apt/dnf)安装的软件
sudo apt install/usr/bin/python3
/usr/local/bin/
手动编译安装的软件(make install)
你自己
/usr/local/bin/nginx
/opt/
大型第三方闭源软件
软件自带安装脚本
/opt/google/chrome/chrome
~/.local/bin/
用户级软件(不需要sudo)
你手动下载
~/.local/bin/code
(VS Code用户级)

简单记忆法:

  • apt install
     装的 → 在 /usr/
  • 自己 make install 的 → 在 /usr/local/
  • 官网下载的 .deb 双击安装的 → 可能在 /opt/ 或 /usr/
  • 不需要 sudo 的用户级软件 → 在 ~/.local/

配置文件都藏哪?——/etc/ 和 ~/.config/ 分工明确

Linux 的配置文件有两级,系统级和用户级,互不干扰:

系统级:/etc/

配置文件
用途
/etc/apt/sources.list
apt 软件源(换国内源就改这)
/etc/hostname
电脑主机名
/etc/hosts
本地DNS解析(屏蔽网站用得到)
/etc/fstab
开机自动挂载磁盘配置
/etc/sudoers
sudo权限配置(小心改!)
/etc/ssh/sshd_config
SSH服务端配置

用户级:~/.config/ 和 ~/.软件名rc

配置文件
用途
~/.config/
大部分现代 Linux 软件的个人配置目录
~/.bashrc
Bash 终端配置(别名、环境变量)
~/.gitconfig
Git 全局配置
~/.vimrc
Vim 编辑器配置

💡 提示: 改系统级配置需要 sudo,改用户级配置直接编辑家目录下的文件就行。改之前建议先备份!

日志文件在哪?——/var/log/ 排查问题必去

系统或软件出了问题,日志是第一现场:

日志文件
用途
/var/log/syslog
系统全局日志(Ubuntu/Debian)
/var/log/messages
系统全局日志(CentOS/RHEL)
/var/log/dmesg
内核日志(硬件相关)
/var/log/auth.log
登录/SSH 认证日志
/var/log/apt/history.log
apt 安装/卸载历史
~/.cache/
各软件的个人缓存(出怪问题可以清这)

实时查看日志尾巴(排错神器):

# 实时查看系统日志(Ctrl+C退出)
sudotail -f /var/log/syslog

# 查看内核日志(查硬件问题)
dmesg | tail -20

实战练习:把目录结构摸熟

按顺序完成以下操作,把本篇内容串起来:

# 1. 查看根目录下有什么
ls /

# 2. 查看家目录(包括隐藏文件)
ls -la ~

# 3. 找到你的字体目录,看看已安装哪些字体
fc-list | head -20

# 4. 查看 Wine 的虚拟C盘结构(如果装了Wine)
ls ~/.wine/drive_c/ 2>/dev/null || echo"Wine未安装或使用了自定义前缀"

# 5. 查看系统级字体目录
ls /usr/share/fonts/truetype/

# 6. 查看用户级配置目录
ls ~/.config/

# 7. 查看系统日志最后20行
tail -20 /var/log/syslog 2>/dev/null || tail -20 /var/log/messages 2>/dev/null || echo"日志路径因发行版而异"

# 8. 找一下 python3 装在哪(熟悉which命令)
which python3
ls -la $(which python3)

# 9. 查看磁盘挂载情况(理解"一棵树"的概念)
df -h

总结:一张表记住核心目录

你想找什么
去哪个目录
我的文档/图片/下载
~/
(家目录)
软件装在哪
/usr/bin/
 或 which 软件名
系统配置文件
/etc/
我的个人配置
~/.config/
字体(系统级)
/usr/share/fonts/
字体(用户级,推荐)
~/.local/share/fonts/
Wine虚拟C盘
~/.wine/drive_c/
Wine字体目录
~/.wine/drive_c/windows/Fonts/
系统日志
/var/log/
大型第三方软件
/opt/

💡 这篇文章是因为有朋友留言提到这个问题,我想了一下,这个问题有必要拿出来聊聊。

下一篇预告:**《Linux打印机与扫描仪安装攻略——CUPS/hplip/扫描》。

最新文章

随机文章