ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Ubuntu目录结构全解析:从根目录到Desktop目录的完整指南

Ubuntu目录结构全解析:从根目录到Desktop目录的完整指南 从 Windows 或 macOS 刚转过来用 Ubuntu 的人十有八九会被那个陌生的根目录结构搞懵。刚装好系统打开文件管理器左边栏一堆英文名目录到底哪个对应自己的文件哪个是装软件的地方想改个配置又该去哪里找我在 Ubuntu 上折腾了这么多年踩过不少坑之后发现系统目录这件事其实理清楚几条主线就够了。这篇文章就是讲 Ubuntu 系统目录的。我会从根目录的设计逻辑讲起把每个关键目录的实际用途、交互关系、常见操作比如查看空间占用、权限设置、挂载新硬盘都过一遍文末专门说清楚大家问得最多的 Desktop 目录到底在哪里。不管你是刚在虚拟机上装好 Ubuntu 的新手还是双系统用户甚至是准备搞开发、搭服务器的这篇文章都能让你少走弯路。1. 先搞清楚 Ubuntu 目录到底怎么组织的1.1 目录树不是“C盘D盘”是一切从根开始的树状结构Windows 用户刚接触 Linux 时最容易犯迷糊的一点就是Ubuntu 没有盘符的概念。在 Windows 里你有 C 盘、D 盘、E 盘每个盘有自己的根目录结构是“森林”。但在 Ubuntu 里整个系统只有一个根用/表示。所有目录、所有硬盘分区、所有设备都挂在/这棵大树上。这个设计看着抽象实际用起来却很高效。你可以把整个文件系统想象成一颗倒挂的大树/是树根往下长出/home、/etc、/var、/usr这些大枝干枝干再长出细枝末节。你的 U 盘插上去会出现在/media/你的用户名/下面你新加了一块硬盘可以挂载到/data或/mnt下甚至连系统的运行状态——CPU 信息、内存大小、温度传感器数据都以文件形式放在/proc和/sys里。我第一次理解这个结构时用了个生活化类比Linux 的根目录/就像一个小区的总门牌号体系。小区只有一个入口根进去之后按区、按楼、按单元划分/home、/etc、/var你家住哪一户/home/用户名/物业办公室在哪/etc垃圾回收站在哪/var超市仓库在哪/usr。每个区域各有分工互不打扰但都由总体系管着。这套结构遵循的是文件系统层级标准FHSFilesystem Hierarchy Standard。它规定了哪里放可执行文件、哪里放配置文件、哪里放动态变化的日志数据。这套标准不只是 Ubuntu 在用几乎所有的 Linux 发行版都遵循它。所以你在 Ubuntu 上学到的目录知识换到 CentOS、Debian、Fedora 上也基本通用。1.2 为什么 Ubuntu 要这样安排目录而不是做成 Windows 那种形式有人可能会问Windows 那种 C 盘 D 盘方式看起来不是更直观吗每个软件装一个目录文件跟自己走。为什么 Linux 非要搞一套这么“绕”的体系核心原因有两点权限隔离和数据分类。在 Linux 世界里权限是命根子。普通用户不能随便动系统目录系统文件也不应该和用户个人文件混在一起。/bin、/sbin这些目录里的程序是系统启动和运行必需的如果普通用户能随意增删系统早就崩了。把系统文件、用户文件、临时文件、运行日志分开存放就是为了让权限边界清晰。你在/home里怎么折腾都不会弄坏系统这是 Windows 用户很难体验到的一种安全感。另一个原因是数据分类。Linux 目录是按“用途”划分的不是按“来源”划分的。配置文件统一放/etc日志统一放/var/log库文件统一放/usr/lib。这样做的好处是备份方便。想备份系统配置打包/etc就行想清理日志看/var/log想迁移用户数据整个/home带走。排查问题方便。服务起不来第一反应去看/var/log下的日志缺库文件去/usr/lib或/lib里找配置文件写错了去/etc里检查。多用户友好。Linux 天生是多人多任务系统所有用户的数据都在/home下分目录存放互不干扰。等你用习惯了这套逻辑回头再看 Windows 那种“软件装C盘却把配置写到用户目录、日志散落在各处”的做法反而会觉得乱。2. 根目录下那些核心目录到底谁管什么2.1 一图看懂 / 根目录整体布局安装完 Ubuntu 后在终端里执行ls /你会看到一大堆目录。下面这个表格列出了最核心、最高频使用的一批目录以及它们的职责和常见用途。建议先整体过一遍然后重点记住带星号的几个它们是你日常打交道最多的。目录作用权限级别日常使用频率一句话记忆点/根目录整个文件系统的起点仅 root 可写高大树根/home普通用户的家目录存放个人文件对应用户可读写最高你的小窝/rootroot 用户的家目录仅 root低管理员专属/etc系统和服务配置文件仅 root 可写高配置大本营/usr系统软件和库文件的集合仅 root 可写高软件仓库/var变化数据日志、缓存、队列大部分 root 可写中高动态数据池/bin基本命令ls、cp、mv 等仅 root 可写高基础工具包/sbin系统管理命令fdisk、mkfs 等仅 root 可写中管理员工具/lib系统库文件和内核模块仅 root 可写低系统依赖库/tmp临时文件目录所有人可写中临时中转站/opt第三方大型软件安装目录root 可写低第三方软件区/mnt临时手动挂载点root 可写中手动挂盘处/media自动挂载可移动设备root 自动管理中自动挂盘处/dev设备文件硬盘、终端、声卡等系统管理低设备映射区/proc内核和进程信息的虚拟文件系统只读为主低系统状态窗口/sys内核设备信息虚拟文件系统只读为主低内核设备窗口/srv服务数据目录网站、FTP 等服务相关低服务数据区/run系统启动以来的运行时数据系统管理低运行时数据/lostfound断电或故障后恢复的碎片文件系统管理极低数据急救区刚上手不用把这些全部背下来捡重点用慢慢就熟了。核心记住一条线你自己的东西在/home系统的配置在/etc软件装在/usr系统运行时产生的日志和数据在/var临时文件扔/tmp。2.2 核心目录逐个拆解/home、/etc、/var、/usr 到底是什么这四个目录我觉得是整个 Ubuntu 系统的造血系统把它们的逻辑吃透后面的操作基本都是顺着走的。/home你的小窝所有个人数据的根每次登录 Ubuntu你首先接触到的就是家目录/home/你的用户名。你的下载文件、文档、图片、桌面文件、个人配置全在这里面。打开终端时默认停留的位置是~这个波浪符号就是/home/你的用户名的缩写。多用户系统里每个用户都有自己的家目录普通用户之间默认无法访问对方家目录里的私有文件如果权限没放开的话。在这个目录里用ls -a能看到很多点开头的隐藏文件比如.bashrc、.profile、.config。它们是用户级配置文件控制着你终端的行为、桌面环境的外观、各种软件的默认设置。有时候环境变量配错了进不去图形界面就得在这里面排查。/etc配置文件大本营出问题的头号嫌疑几乎所有的系统级配置都在/etc下。软件装好后它的默认配置一般在/etc里放一份。sources.list 管理软件源、fstab 控制开机自动挂载分区、hostname 定义机器名、ssh 目录存 OpenSSH 服务配置。改这些配置文件需要有 root 权限改之前强烈建议先备份比如sudo cp /etc/fstab /etc/fstab.bak。整个/etc目录如果定期打包备份系统重装后能快速恢复大部分环境设置。/var变化数据的集中营日志和缓存都在这var是 variable 的缩写专门放经常变化的数据。最大的头是/var/log里面躺着 syslog、auth.log、kern.log 这些系统日志。网络连接不上、服务启动失败、系统崩溃多半都要到这里来找原因。/var/cache是软件包缓存apt 装软件时下载的 deb 包会先放这里清理用sudo apt clean。/var/lib存各种服务的数据库和状态文件比如 Docker 的默认数据目录就在这里。/usr软件的天下程序、库、源码、文档都在这usr是 Unix System Resources 的缩写看名字感觉是用户目录实际是系统软件集合。你通过 apt 安装的软件绝大部分装在/usr/bin它们的配置文件在/etc库文件在/usr/libdoc 文档在/usr/share/doc。使用dpkg -L 软件名可以查看这个软件到底把文件散到了哪些地方。对这个目录的理解能帮你快速定位“程序装到哪去了”这类问题。2.3 一些容易被忽略但其实很关键的目录/tmp、/opt、/proc、/dev除了上面那四个主力目录还有几个目录平时不太显眼但在特定场景下会突然变得很重要。/tmp是临时文件目录任何用户都能往里面写文件。重要特性是系统重启后里面的内容可能被清空具体取决于配置systemd 的 tmpfiles 机制会定期清理。有人喜欢把临时下载的东西扔这里但我建议大型安装包或重要数据别放/tmp装到一半重启了文件说没就没。/opt是第三方大型软件的安装位置。有些商业软件比如 JetBrains 全家桶、Google Chrome、某些工业软件安装时默认放到/opt下因为它们不想把文件拆得七零八落而是希望整成一个独立目录方便管理。手动解压安装的软件也建议放这里卸载时直接删目录就行。/proc和/dev是两个特殊目录。/dev是设备文件所在地你的硬盘、U盘、声卡、终端设备都在这里有对应的文件节点。比如ls /dev/sd*能看到硬盘对应的块设备/dev/sda1通常就是第一块硬盘的第一个分区。/proc更神奇它不占磁盘空间是内核状态在虚拟文件系统中的映射。cat /proc/cpuinfo看 CPU 信息、cat /proc/meminfo看内存信息都是排查问题的高频操作。你还可以用cat /proc/version快速查看内核版本。3. 用户目录和 Desktop 目录被问得最多的位置问题3.1 为什么 Desktop 目录有时候找不到有时候又叫“桌面”现在到了很多人刚接触 Ubuntu 时最容易卡壳的地方Desktop 目录到底在哪里。在 Ubuntu 桌面版中每个用户的桌面目录位于/home/你的用户名/Desktop。如果你的系统语言是中文那它在文件管理器里可能显示成桌面但实际目录路径还是英文的Desktop只是显示名本地化了。于是就会出现这几种情况系统是英文的~/Desktop直截了当所有人一看就懂。系统是中文的路径依然是~/Desktop但文件管理器里显示为“桌面”。用的是 XDG 用户目录机制路径稍作定制比如有人会把桌面目录改到~/桌面或者自定义位置。在终端里想进入桌面目录最稳妥的方式是执行cd ~/Desktop。但如果你改过 XDG 配置或者系统语言设置导致目录名被本地化那实际目录名可能是~/桌面。这时候直接用cd 桌面反而能进去。如果你不确定自己的桌面目录到底在哪有几个办法# 方法一直接用 xdg-user-dir 查询最准确 xdg-user-dir DESKTOP # 方法二列出家目录下的所有内容看看 ls -a ~ # 方法三查 XDG 配置文件 cat ~/.config/user-dirs.dirsxdg-user-dir DESKTOP这个命令返回的就是当前桌面目录的绝对路径它是通过读取~/.config/user-dirs.dirs这个配置文件来确定的。这个方法比肉眼翻文件管理器快得多建议直接记住。3.2 教你定位 Desktop 目录的 3 种方法总有一种能用我遇到过不少在 Ubuntu 里写代码、存文档的朋友他们的文件明明保存在桌面墙纸也设置了桌面背景但一开终端想去那个目录就懵了。这里整理了三种定位 Desktop 目录的方法按优先级从高到低排列。方法一终端下用 xdg-user-dir 精准定位最推荐这是最标准的做法执行后系统会直接打印出桌面的绝对路径xdg-user-dir DESKTOP # 输出类似 /home/yourname/Desktop如果系统桌面目录被改过比如改到了/data/desktop这个命令也会如实打印出来。方法二直接使用cd加 Tab 自动补全找名字如果你不想敲命令可以输入cd ~/D然后按 Tab 键系统会自动补全成Desktop或按实际目录名显示。这种方法不需要记忆确切的目录名比较适合新手。方法三在文件管理器里右键查看属性这是最直观的方式。打开文件管理器进入家目录找到“桌面”或“Desktop”目录右键选择“属性”里面会直接显示完整路径。或者直接在文件管理器地址栏输入~也就能看到家目录下的所有文件夹了。在图形界面里还有一种实用操作把桌面的文件放到~/Desktop后桌面就会实时显示这些文件如果你把~/Desktop目录删了或改了名桌面图标可能就全部消失了。这点在配置新系统时尤其要留意。3.3 中英文系统的目录差异与 XDG 机制搞懂“桌面”和“Desktop”的关系很多从 Windows 过来的人会以为中文 Ubuntu 的桌面目录真的是“桌面”从而在写脚本、配路径时报错。这背后的机制是 XDG User Directories它允许桌面环境把常用目录桌面、文档、下载、图片等按语言习惯显示名称但实际路径默认还是英文目录名。看一下~/.config/user-dirs.dirs这个文件你就明白了XDG_DESKTOP_DIR$HOME/Desktop XDG_DOWNLOAD_DIR$HOME/Downloads XDG_DOCUMENTS_DIR$HOME/Documents XDG_PICTURES_DIR$HOME/Pictures这些变量定义了文件管理器左侧栏显示的快捷入口指向哪里。系统语言是中文时文件管理器只是显示成“桌面”“下载”“文档”但路径仍是英文的Desktop、Downloads、Documents。这里要特别提醒一点如果你手动把目录名改了比如把~/Desktop重命名为~/桌面文件管理器左侧的“桌面”入口就会失效桌面也可能什么都不显示。这是因为 XDG 配置仍然指向$HOME/Desktop但那个路径已经不存在了。解决办法有两种把目录改回去保持默认配置。同步修改~/.config/user-dirs.dirs里的变量指向新目录。我个人的建议是保持系统默认的英文目录名不动。在终端、脚本、代码里都用/home/用户名/Desktop这个路径显示名是什么只影响文件管理器图标不影响底层实际路径。4. 目录实操指南查看、切换、挂载、权限一次讲清4.1 高频命令速查ls、cd、pwd、du、df 的典型用法理解了目录结构下一步就是学会在终端里“驾驶”这套系统。下面这组命令是我日常使用频率最高的每一项都配上典型用法和输出示例。# 查看当前所在目录的完整路径 pwd # 列出目录内容-l 显示详细信息-a 显示隐藏文件-h 人性化显示大小 ls -l ls -la ls -lh # 切换目录常用符号要记住~ 家目录、. 当前目录、.. 上一级目录 cd /etc cd ~ cd .. # 查看磁盘分区占用情况-h 人性化显示容量-T 显示文件系统类型 df -hT # 查看当前目录及子目录的磁盘占用情况--max-depth 控制显示的深度 du -h --max-depth1 du -sh /home/user/Downloadsdu这个命令在排查磁盘空间不足时简直是救命稻草。比如你的系统提示“磁盘空间满”第一件事就是运行du -h --max-depth1 /从根目录逐层查下去看哪个目录占用最大然后再深入那一层继续查一层层定位到具体是哪个大文件在占空间。实际排查时我习惯搭配sort -h排序一下输出让最大的目录排在最后或最前一眼就能看到问题所在。4.2 权限基础为什么有的目录进不去、有的文件删不掉在 Ubuntu 中目录权限的直观表现就是有的目录你能进去有的目录连列表都看不到有的文件你能读有的文件删都删不掉。这是因为每个文件和目录都有一组权限属性分别针对三类用户所有者owner、所属组group、其他用户others。执行ls -l查看一个目录时第一列那一串字符比如drwxr-xr-x就是权限位。第一个d表示目录类型后面九个字符分三组分别是所有者、所属组、其他人的读r、写w、执行x权限。符号含义对应数值说明r读4对于文件可读内容对目录可列出内容w写2对文件可修改内容对目录可增删文件x执行1对文件可执行对目录可进入-无权限0对应位没有权限如果你想进入一个目录必须有目录的执行权限x想在里面新建文件需要写权限w想列出目录下有什么文件需要读权限r。所以当你执行cd /root被拒绝、ls /etc/sudoers.d看不到内容时不用怀疑人生那都是权限机制在起作用。调整权限用chmod常用格式是数字模式。比如chmod 755 文件名表示所有者可读写执行7、组可读执行5、其他人可读执行5。想递归修改整个目录用-R参数但要注意别随便对整个系统目录用chmod -R很容易把系统权限搞乱。4.3 把新硬盘挂载到自定义目录从分区到自动挂载一步到位Ubuntu 系统目录用的是层次化挂载体系这意味着你的新硬盘、新分区并不是“自动出现在某个盘符”而是需要主动挂载到一个目录上。很多从 Windows 转过来的用户第一次接触“我的硬盘怎么不显示”时都很懵下面这套流程能解决 90% 的挂载需求。假设你新加了一块空白硬盘/dev/sdb目标是把它挂载到/data目录。第一步确认设备名sudo fdisk -l这个命令会列出所有磁盘及分区找到你新加的那块。如果你不确定看容量和已有系统盘对比一下就知道了。第二步分区如果硬盘是全新的sudo fdisk /dev/sdb进入 fdisk 交互界面后输入n新建分区一路默认最后输入w写入分区表并退出。这样会生成一个如/dev/sdb1的新分区。第三步格式化文件系统sudo mkfs.ext4 /dev/sdb1mkfs.ext4会把分区格式化为 ext4 文件系统。确认操作前命令会询问y输入后等待完成即可。第四步创建挂载点并临时挂载sudo mkdir /data sudo mount /dev/sdb1 /data挂载成功后往/data里写文件就是往新硬盘里写。第五步设置开机自动挂载直接改/etc/fstab文件sudo blkid /dev/sdb1 # 查看 UUID记录下来 sudo vim /etc/fstab在 fstab 末尾加一行UUID你的UUID值 /data ext4 defaults 0 2保存退出后用sudo mount -a测试语法是否正确。如果这行写错了下次开机系统会启动失败所以一定要用sudo mount -a先验证。我见过太多人因为 fstab 写错导致系统卡在 emergency mode所以这里的建议是改完立刻验证验证通过的标志是命令无报错。4.4 环境变量与目录的关系PATH 是怎么决定命令能不能执行的环境变量和目录系统关系非常紧密其中PATH决定了你在终端里敲命令时系统去哪些目录寻找可执行文件。比如你敲python3系统会按PATH里的目录顺序依次查找名为python3的可执行文件找到就执行。查看当前 PATHecho $PATH # 输出示例/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin如果你自己手动编译安装了软件装到了/opt/myapp/bin下面直接在终端里敲myapp会提示“找不到命令”。这时候就需要把目录加入 PATHexport PATH$PATH:/opt/myapp/bin但这只对当前终端会话有效。想让配置永久生效需要把这一行写入用户配置文件~/.bashrc针对当前用户或/etc/profile、/etc/environment全局生效。这里有个大坑不要把 PATH 写错比如漏了原有的$PATH会导致连ls、cd都找不到命令。如果不小心在配置里把 PATH 搞坏了补救办法是直接用绝对路径执行命令比如/usr/bin/sudo /usr/bin/vim ~/.bashrc改回正常的配置。5. 常见问题与排查技巧实录5.1 问题速查表目录相关高频报错与解决方案我把日常使用中最常遇到的目录问题整理成了一个速查表方便有需要时直接查。问题现象可能原因解决办法终端输入cd /root提示 Permission denied/root目录默认只允许 root 用户访问使用sudo -i切换到 root或确认当前用户确实有访问必要桌面上的文件不见了~/Desktop被改名或移动XDG 配置失效检查xdg-user-dir DESKTOP输出确认目录是否存在磁盘空间不足但不知道什么占了空间日志或缓存目录膨胀du -h --max-depth1 /逐层排查删除文件提示Operation not permitted目录权限不够或文件被锁定先确认当前用户对所在目录是否拥有写权限必要时用sudo开机后新硬盘没有自动挂载fstab 配置缺失或错误查看cat /etc/fstab确认 UUID 无误ls /dev/sda找不到硬盘磁盘设备名可能不是 sda或驱动未正确加载用sudo fdisk -l查看实际设备名执行命令提示command not foundPATH 中缺少该命令所在目录检查echo $PATH补充对应目录切换中文界面后终端里cd ~/Desktop失败桌面目录被本地化成其他名字运行xdg-user-dir DESKTOP查看真实路径排查这类问题有个通用思路先确认路径存在ls -a再确认权限ls -ld再查看配置cat ~/.config/user-dirs.dirs三分靠知识七分靠跑命令验证。5.2 独门避坑技巧我在目录操作上踩过的几个真实坑做开发这么久目录相关的坑踩了一堆挑几个典型的分享出来帮你提前预防。坑一手滑把~/.bashrc的 PATH 写坏了有一年我手动编译安装了一个工具往~/.bashrc里追加 PATH 时写成了export PATH/opt/new/bin把原来的$PATH覆盖了。重启终端后ls、sudo、vim全部提示找不到命令。当时人傻了后来才想到用绝对路径救自己/usr/bin/sudo /usr/bin/vim ~/.bashrc改回export PATH$PATH:/opt/new/bin才恢复。从那以后我改 PATH 前一定会先备份配置或者用export PATH$PATH:/new/path这种安全写法。坑二在中文系统里写脚本时用了中文目录名有次写自动化脚本需要把文件保存到桌面我直接用了~/桌面结果换了一台英文系统的电脑脚本就炸了。后来统一改用xdg-user-dir DESKTOP动态获取路径问题彻底解决。这个经验放到任何涉及用户目录的脚本里都适用永远不要硬编码路径。坑三fstab 写错进不了系统改 fstab 想让数据盘开机自动挂载结果 UUID 抄错了一位。重启后系统卡在 emergency mode屏幕提示 Operation failed。当时差点想重装系统后来进入 root shell用sudo vim /etc/fstab把错误行注释掉再mount -a验证没问题才松了口气。现在我的习惯是改 fstab 前先复制一份备份改动后立即用sudo mount -a测试再重启。坑四用chmod -R 777解决权限问题刚用 Linux 那会儿遇到目录权限不够第一反应就是chmod -R 777全开权限。后来发现这招虽然在个人机上暂时解决问题但会破坏系统的安全边界。更合理的做法是只对当前用户需要的目录做授权或者用chown变更目录所有者让当前用户成为所有者拥有完整的读写权限。从这些坑里总结出来的经验值一句话权限和路径的问题重在预防不重在救火。6. 个人使用体会与一个实用建议写了这么多最后聊聊我的真心话。Ubuntu 的目录体系初看起来复杂但它是你理解整个 Linux 世界的地基。不管是开发、部署、运维还是单纯把 Ubuntu 当日常系统用对目录的理解程度直接决定了你遇到问题时是束手无策还是能找到切入点。我个人在实际使用中最大的体会是不要把 Linux 目录当成 Windows 盘符的替代品而要理解它是按“用途”和“权限”来组织的一套逻辑。想通了这个你就不需要背路径了而是能通过“这是配置文件”“这是日志”“这是用户数据”这样的功能判断自动猜到文件大概在哪个目录下。最后再分享一个实用小技巧在 Ubuntu 终端里输入cd后按住 Tab 键系统会自动补全目录名和文件名输入man加命令名比如man du可以查看某个命令的完整手册。这两个习惯能让你的效率提升一大截。如果你刚接触 Ubuntu建议找台虚拟机装一个然后多打开终端用cd、ls、du这些命令在根目录下翻一翻看看每个目录里到底有什么。看得多了这套目录树的脉络自然就刻在脑子里了。哪个目录不懂欢迎在评论区直接发我我看到都会尽量回复。
返回列表