来自 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
) 中,还是在臭名昭著的注册表中?没有人知道,甚至微软也不知道。所以我们可以继续下去。