Unix / Linux操作系统上的标准和/或通用目录


25

来自Windows世界,我发现大多数文件夹目录名称都非常直观:

  • \Program Files 包含程序使用的文件(惊奇!)

  • \Program Files (x86) 包含由64位OS上的32位程序使用的文件

  • \Users(以前为Documents and Settings)包含用户的文件,即文档和设置

    • \Users\USER\Application Data 包含特定于应用程序的数据

    • \Users\USER\Documents 包含属于用户的文档

  • \Windows 包含属于Windows本身操作的文件

    • \Windows\Fonts 存储字体文件(惊奇!)

    • \Windows\Temp 是全局临时目录

等等。即使我不知道这些文件夹的作用,也可以从它们的名称中准确地猜测出来。

现在,我对Linux有了一个很好的了解,并对如何找到围绕文件系统的方式感到非常困惑。

例如:

  • /bin包含二进制文件。但这样做/sbin/usr/bin/usr/sbin,,也许更多的,我不知道。哪个?它们之间有什么区别?如果我想制作一个二进制文件并将其放在系统范围内的某个地方,该放在哪里?

  • /media包含外部媒体文件系统。但是也是/mnt。目前,它们都没有在我的系统上包含任何内容。一切似乎都在/dev。有什么不同?硬盘上的其他分区(例如Windows中的C:D:)在哪里?

  • /home包含用户文件和设置。这么直观是什么,但是接下来应该做什么/usr呢?/root即使是拥有文件和设置的用户,又怎么会分开呢?

  • /lib包含共享库,例如DLL。但是也是/usr/lib。有什么不同?

  • 什么 /etc?它真的代表“等等”吗?哪些文件应该放在那里-全局文件还是本地文件?它是所有人都不知道放在哪里的东西的统筹,还是有特定的用例?

  • 什么是/opt/proc/var?它们代表什么?它们代表什么?我在Windows *中还没有看到类似它们的东西,而且我只是想不出它们的用途。

如果有人可以想到其他可能会有所了解的标准地点,请随时将其添加到问题中;希望对于像我这样开始熟悉* nix系统的人们来说,这可以是一个很好的参考。

*好,那是谎言。我在WinObj中看到过类似的事情,但显然不是定期的。我仍然不知道这些在Linux上做什么。


1
感谢您保持良好的学习精神。这个话题经常引起争议。请参阅我对该问题的回答,以获取有关Windows与Linux中文件系统结构之间基本差异的一些额外说明。
卡莱布

不要将“ usr”视为“ user”的缩写,而是“ Unix System Resources”(即使它可能是一个反义词,因为几年前它确实包含用户目录)(linux-training.be/files/books/html /fun/ch09s08.html)。
lgeorget 2013年

试图证明Unix / Linux / etc针对Windows(或Mac OS X)的神秘目录命名是没有用的。就是这样。
安德鲁·沃尔夫

截至2017年,Windows文件夹结构完全混乱。C:\Program FilesC:\ProgramData%HOME%\AppData\Local%HOME%\AppData\LocalLowC:\Windows\SystemApps...所有的例子,其中一个可以在Windows可执行找到。而且我什至不谈论配置文件和注册表,我不想变得更加沮丧。PS:我主要在Windows中工作。
rsenna

Answers:


29

Linux发行版使用FHS:http : //www.pathname.com/fhs/pub/fhs-2.3.html

您也可以尝试man hier

我将尽力总结您的问题,但我强烈建议您通读FHS:

  • / bin用于非超级用户系统二进制文件
  • / sbin用于超级用户(根)系统二进制文件
  • / usr / bin和/ usr / sbin分别用于非关键的共享非超级用户或超级用户二进制文件
  • / mnt用于临时挂载分区
  • / media可一次安装许多可移动媒体
  • / dev包含您的系统设备文件;说来话长 :)
  • / usr文件夹及其子文件夹可以与其他系统共享,这样它们就可以访问一个位置安装的相同程序/文件。由于/ usr通常位于单独的文件系统上,因此它不包含使系统联机所需的二进制文件。
  • / root是单独的,因为可能有必要使系统联机而不挂载可能位于单独的分区/硬盘驱动器/服务器上的其他目录
  • 是的,/ etc代表“等”。本地系统的配置文件存储在此处。
  • / opt是可以安装下载/编译程序的地方。这样,您可以将它们与系统的其余部分分开,并将所有文件放在一个位置。
  • / proc包含有关内核和正在运行的进程的信息
  • / var包含大小可变的文件,例如日志,邮件,网页等。

要访问系统,通常不需要/ var,/ opt,/ usr,/ home;系统上一些可能最大的目录。

/ srv是我的最爱(有些人不使用)。它用于通过http / ftp / samba等服务托管的数据。我已经看到了/ var经常用于此目的,但这并不是它的真正目的。


良好的概述,可以解决特定的问题。请注意,某些发行版/home/users/username用于用户以及/home/services/servicename您提到/src的用途。我认为这样做效果更好,因为它对分区更通用。您可以将它放在自己的分区上,也可以使用相同的分区和用户数据,这通常是我想要做的。
Caleb

+1感谢您的链接和说明,这些都很棒!:)
Mehrdad

/ usr应该包含特定于操作系统上的应用程序的文件和/或第三方文件。这不是不可共享的!尽管LSB主张将这些保留在/ opt中。另一方面,/ usr / share可以包含可在不同体系结构/操作系统版本的计算机之间共享的文件。这些只是惯例,但!使用完全不同的结构很有可能(尽管要付出很多努力)。但是,还有其他约定-例如Oracle的“最佳灵活体系结构”
symcbean

1
关于Unix要记住的另一件事是“ 一切都是文件 ”(或至少看起来像一个文件)的概念。例如,/ proc中的内容看起来像文件和目录,但是当您访问它们时,内容实际上是由内核动态创建的。这意味着您可以使用相同的工具(ls,cat等)来访问此信息。
KeithB

1
@symcbean来自FHS:“ ... / usr是可共享的只读数据。这意味着/ usr应该在各种FHS兼容主机之间可共享...”。显然,有些文件是与体系结构有关的,而某些发行版本期望的目录层次结构大不相同。解决方案是像做好管理员一样做好功课:)
bhinesley 2011年

18

我不会回答它们的含义(其他人都有),但会提供一些历史背景。

首先,请记住UNIX已经接近40年了,回到纸带时代和300波特的硬编码终端到大型机的时代(Windows XP系统已经接近10年了)。打字速度很慢,打字效率的需求超过了许多其他考虑因素。这就是使用非常短的基本命令(即“ ls”,“ cat”,“ cc”,“ dd”等)的原因。目录结构也是如此。当时的想法是,如果命令超过三个或四个字符,则名称太长。

/ usr目录最初包含用户的主目录,因为大多数命令位于/ bin中,而所有设备文件均位于/ dev中。后来,人们认为可以减小主驱动器(根文件系统'/')的大小,以加快启动时间。因此出现了其他结构,例如/ usr / bin,/ usr / include和/ usr / lib,其中/ usr是单独的“驱动器”。后来,人们认为用户的主目录位于另一个驱动器/ home中。而且要晚得多,才有一个/ var(变量/可更改的缩写)。/ etc目录的确表示“等”,因为那是所有系统配置文件的全部位置。/ mnt用作访问驱动器(通常是备用驱动器)的临时位置。像/ opt,/ proc和/ media这样的目录要晚得多。

还有很多遗漏的地方(例如/ usr / local和/ net),但这简要说明了为什么名称“不那么直观”。


2
+1我喜欢历史背景,它组织了我的大脑。:)感谢您抽出宝贵的时间写这篇文章!
Mehrdad

5

正如这里已经提到的,Linux发行版大多使用FHS,请参阅此处以获取类似教程的概述,特别适合来自Windows的用户。

请注意,Windows目录从表面上看似乎很直观。但是,让我问您,程序的设置在哪里属于*.ini程序Documents and Settings\User(在程序文件夹,(\Application Data\Local Settings\Application Data)或臭名昭著的注册表中)?没有人知道,甚至微软也没有。因此,我们可以继续下去。


1
我认为Windows 7文件夹的名称更好。即AppData \ Roaming与AppData \ Local-它们描述了其中的数据类型。至于配置信息:我认为我知道在哪里放置它,但是我不能很好地描述它。:)
Mehrdad
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.