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

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

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

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

  • \Program Files (x86)包含 64 位操作系统上的 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

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

你也可以尝试一下man hier

我将尝试立即总结您的问题的答案,但我强烈建议您通读 FHS:

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

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

我最喜欢的目录之一是 /srv,但有些人不使用它。它适用于通过 http/ftp/samba 等服务托管的数据。我见过 /var 经常用于此目的,但这并不是它的真正目的。

答案2

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

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

/usr 目录最初包含用户的主目录,因为大多数命令位于 /bin 中,所有设备文件位于 /dev 中。后来人们认为可以减小主驱动器(根文件系统,“/”)以加快启动时间。因此出现了 /usr/bin、/usr/include 和 /usr/lib 等其他结构,其中 /usr 是一个单独的“驱动器”。很久以后,人们认为用户的主目录位于另一个驱动器 /home 中。在那之后很久,才有了 /var(variable/changeable 的缩写)。 /etc 目录确实意味着“等等”,因为这是所有系统配置文件的包罗万象的位置。 /mnt 用作访问驱动器(通常是备份驱动器)的临时位置。像 /opt、/proc 和 /media 这样的目录要晚得多。

有很多内容被遗漏了(例如 /usr/local 和 /net),但这简要描述了为什么这些名称“不太直观”。

答案3

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

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

相关内容