如何了解Ubuntu文件系统布局?


220

在Windows中,安装驱动器中可能只有几个重要文件夹(在我的Windows文件系统的逻辑图中,重要的意思是重要C:\)。即Program FilesWindows。我只是远离Windows文件夹,“添加删除程序文件”足以处理program filesWindows文件夹。当然,有一个名为的文件夹Users,用户(非管理员)只能访问他们的文件夹。

因此,我对Windows文件系统有一个清晰的认识。在Ubuntu中,当我到达location时/,会有大量的文件夹列表,其中的大多数文件夹都不知道它们包含的内容。该/bin文件夹似乎等同Windows于Windows 中的文件夹。该/usr文件夹似乎等同Users于Windows 中的文件夹。但是,即使/home文件夹看起来也很合适。

请理解,我确实知道,Ubuntu(Linux)具有与Windows不同的特征,即,在Ubuntu中不必完全等同于Windows功能。我所寻找的只是Ubuntu文件系统的更清晰的图片。

这个问题是一个更大的问题的一部分,我正在分解以使其更易于回答。原始问题可以在这里找到:http :
//sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/


3
另请参见Unix&Linux上的directory-structure标记。所有Linux发行版都遵循相同的模型。
吉尔斯2012年

感谢您的所有答复。我对以下几点感到有些困惑:在Windows中,安装程序通常会通过提示提供一个选项,为所有用户安装软件。如何在Ubuntu中进行区分?同样,这是在将开发软件配置为其IDE时的常见问题。例如,在Windows中,“程序文件\ miktex \ bin”中存在文件“ pdflatex.exe”。因此,我可以将IDE指向此文件并进行配置。在Ubuntu中如何进行此过程?与软件关联的通用二进制文件在哪里(从配置的角度来看,尤其是)?
Shashank Sawant

2
在Ubuntu中,通常为所有用户安装软件。您通过软件包管理器执行的所有操作均适用于所有用户。我不理解您的其余评论。不会“配置”“与软件关联的二进制文件”。您应该将其作为一个单独的问题进行询问,并对要执行的操作进行更好的解释。
吉尔斯2012年

得到它了。我将提出一个新问题。即使如此,这里还是我的意思的简短解释:在Windows中,可以轻松定位.exe文件。例如:“ C:\ Python27 \ python.exe”。所以我知道程序从哪里开始。现在,如果我必须使用Eclipse IDE,我可以简单地将其指向python.exe,这就是我所说的“配置”。我为Python配置了IDE。在Ubuntu中,程序的安装位置在哪里?那仍然是我的回避。
Shashank Sawant

2
@Gilles说的时候要小心all。实际上,GoboLinux项目使用的是类似Windows的目录结构。
new123456 2012年

Answers:


251

您可以在维基百科上对此进行阅读。摘录:

文件系统层次标准(FHS)定义了Linux操作系统的主要目录及其内容。在大多数情况下,它是对传统BSD文件系统层次结构的形式化和扩展。

FHS由Linux基金会维护,Linux基金会是一个非营利组织,由主要的软件和硬件供应商组成,例如HP,Red Hat,IBM和Dell。当前版本为3.0,于2015年6月3日发布。

简短说明的视觉表示:

在此处输入图片说明

基本上,Linux已根据所需功能对目录结构进行了划分,以使系统以最小的所需权限尽可能地安全。否则,有人必然要做很多可避免的工作。

记住,Unix和Linux是为多用户系统创建的,而Windows是为单个用户创建的。其他一切都可以从这个想法中得到解释。您可以在考虑每个目录具有多用户和安全性时对其进行解释。

3个例子:

  • 您将看到仅admin的文件和目录收集在同一目录中:s in /sbin/usr/sbinand /usr/local/sbin代表system。普通用户甚至无法启动其中的程序。普通用户可以启动的文件位于/ bin,/ usr / bin,/ usr / local / bin中,具体取决于逻辑上应该驻留的位置。但是,如果仅是管理员,则应转到s该目录的版本。有个著名的实用程序fuser。您可以使用它杀死进程。如果普通用户可以使用此功能,他将可以终止您的会话。

  • 同样的道理/home:/ home / user1是user1的属性。/ home / user2是user2的属性。user2在user1的家中没有事务处理(反之亦然:user1在user2的家中没有事务处理)。如果所有文件都位于/ home下,并且没有用户名,则必须授予每个文件的权限,并评估是否允许某人写入/删除这些文件。如果您有数十个用户,那将是一场噩梦。

  • 关于库的补充

    /lib/,,/usr/lib//usr/local/lib/是多库系统存在之前的原始位置,并且该存在是为了防止发生故障。/usr/lib32/usr/lib/64/usr/local/lib32//usr/local/lib64/是32位/ 64位multilib的发明。

无论如何,这不是一个静态的概念。其他Linux风格对此布局进行了调整。例如; 当前,您会看到Debian和Ubuntu在FHS布局上发生了很大变化,因为SSD最好使用只读文件。正在朝着新的布局方向发展,其中文件被分成“只读”和“可写”目录/组,因此我们可以拥有一个可以挂载为只读(ssd为分区)和可写的根分区。 (SATA硬盘)。用于此的新目录(不在映像中)为/run/


18
+1风云 我喜欢这张图片,实际上是在寻找一张。
路易斯·阿尔瓦拉多

5
ha认为应该引起注意:+ @LuisAlvarado
Rinzwind'5

4
没有更好的答案!
Shashank Sawant 2012年

1
没有/mnt什么/media,现在是,几年前?
RobinJ 2012年

9
@RobinJ:区别在于,/mnt过去一直是手动管理的。随着许多瞬态设备(闪存驱动器等)的兴起和自动安装成为标准,需要自动处理安装点。为了避免与现有的手动配置冲突,需要一个新目录。因此,这些天/mnt已经沦为提供方便的临时挂载点的角色。
Scott Severance,2012年

104

试试这个命令...

man 7 hier

您也可以在这里查看此手册页:http : //manpages.ubuntu.com/manpages/en/man7/hier.7.html

希望能帮助到你


1
好决定!我总是忘了,尽管它总是存在(即使当网络关闭时也是如此;))
Rinzwind 2012年

1
男人应该重命名为“ it”。:)))
Shiki 2013年

man hier现在是我最喜欢的命令之一!对于我来说,这些解释比FHS doco更为清晰,特别是对于经验不足的Ubuntu用户而言,区别于“本地计算机”和“站点范围”,这与中等的DOS / Windows体验有所不同。
WillC '17

顺便说一句,第7栏为高分手册的Miscellanea部分。
Pablo A

嗯。值得一提的是,这种提醒使我想起了仅链接的答案,即使ubuntu的每个版本都可能有此答案。您可以将手册页中的某些内容合并到答案中吗?
jrh

45

后一个答案 -我为初学者创建了一个路线图。如果他们正在寻找文件但不知道在哪里寻找,则可以使用地图进行大致导航。您可以在此处下载高分辨率PNG 。您可以在此处找到相关的帖子。如果时间允许,我会不断更新文件和帖子,并附上有用的评论。


产生流程图的有趣且有用的想法,但不幸的是,它似乎有些死胡同。我的问题是我mysqldump是否应该将文件输出到哪里?
BadHorsie 2015年

@BadHorsie当然总是取决于您的特定用例,但是将其转储到/home/badhorsie/mysqldump目录中就足够了。如果您正在运行许多应用程序,则可以创建一个新用户来运行每个应用程序并将其转储到该应用程序/用户的home目录中。
d4nyll 2015年

@ paranoid-panda,您能否扩展一下为什么您选择不允许通过全分辨率点击图片?这篇文章中嵌入的版本几乎是不可读的。
waldyrious

@waldyrious:如果您查看修订历史记录,您会发现我仅纠正了拼写错误,这是另一个用户以这种特定方式添加了图像。与我无关。随意编辑它,我想不起来使它可单击的正确语法。

@ParanoidPanda正是我所做的。我的编辑修复了拼写错误,并使图像可点击,而您的评论是拒绝和编辑,因此我的问题是:使图像可点击时您怎么看?
waldyrious

36

以下文本显示了目录结构。

mtk4@laptop:/$ pwd
/
mtk4@laptop:/$ tree -L 1
.
|-- bin
|-- boot
|-- cdrom
|-- dev
|-- etc
|-- home
|-- lib
|-- lost+found
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- selinux
|-- srv
|-- sys
|-- tmp
|-- usr
|-- var

这里的主要组成部分是:

  1. /boot :包含引导加载程序

  2. /home :包含用户的主目录。

  3. /bin :系统上所有用户使用的所有可执行二进制文件和命令都位于此处。

  4. /sbin :包含通常由系统管理员使用的系统可执行二进制文件。

  5. /lib :包含支持/ bin和/ sbin中的二进制文件的系统库。

  6. /etc :包含网络,启动时间等的配置文件。

  7. /dev :这里显示了设备文件,即usb,终端设备或连接到系统的任何其他设备。

  8. /proc :包含有关进程运行的信息。

  9. /tmp:这是许多进程创建所需临时文件的临时目录。每次引导计算机时都会清除该文件。

有关更多详细信息,Thegeekstuff链接可以完美地解释通用linux文件系统。


20

\Users等价于/home。的名称/usr是历史文物。

的组合等效\Windows\Program Files是的组合/bin/boot/etc/lib/sbin/tmp/usr/var。Linux和Windows以不同方式拆分已安装的软件。Windows区分操作系统和配套程序。Linux的区别并不相同。大多数(如果不是全部)软件都是通过Ubuntu(发行商)提供的,并且安装在同一目录层次结构中,并且由于软件包管理器会跟踪软件,因此无需将每个程序存储在其自己的目录中。在Linux上:

  • /etc 用于系统配置文件:影响所有用户的配置文件,无论它们适用于整个操作系统还是特定的应用程序。
  • /usr 用于系统代码和数据(程序,库,文档等)。
  • /var用于可变或临时数据:临时文件,日志,程序包管理器数据库,打印机后台打印程序,游戏保存文件等。还有/tmp用于临时文件的文件,可在重新启动后将其擦除。
  • /bin/lib并且/sbin在根目录中有对应项/usr。外部文件是/usr引导过程早期所需的文件。这是磁盘很小且/usr可能位于网络上多个工作站之间共享的文件系统上以来的遗物,在大多数系统上,这并不是真正有用的区别。
  • /boot 包含一些仅用于引导操作系统而不需要用于日常操作的文件。

还有其他目录与Windows所拥有的不对应:

  • /root是根用户的主目录。root用户是不与任何特定用户绑定的管理员帐户。运行时将您更改为该用户sudo。Ubuntu默认情况下不允许root用户登录。
  • /media并且/mnt是挂载点:您可以在其中查看其他操作系统和远程驱动器的文件系统。Windows等效的是其他驱动器号。
  • /proc/sys显示系统信息。在Windows上,您需要浏览菜单或调用系统命令或安装第三方程序才能查看此信息。

与其他Linux发行版一样,Ubuntu通常遵循Linux Filesystem Hierarchy Standard


5

Ubuntu(像所有类似UNIX的系统一样)将文件组织在一个分层的树中,在子树和父树的团队中考虑关系。目录可以包含其他目录以及常规文件,它们是树的“叶子”。树的任何元素都可以通过路径名进行引用;绝对路径名以字符/开头(标识包含所有其他目录和文件的根目录),然后列出必须遍历才能到达该元素的每个子目录,每个子目录均由/符号分隔。

相对路径名不能以/开头。在这种情况下,将从给定的点开始遍历目录树,该点根据上下文而变化,称为当前目录。在每个目录中,都有两个称为的特殊目录。和..分别指目录本身及其父目录。

所有文件和目录都具有公共根目录这一事实意味着,即使系统上存在几个不同的存储设备,将它们安装到所需的位置后,它们也都被视为树中某处的目录。

在此处找到示例和更多信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.