在Windows下,大多数应用程序和应用程序数据都存储在称为C:\Program Files的特殊目录中(有时是C:\Program Files (x86))。与此路径等效的Ubuntu / Linux是什么?甚至有一个吗?

评论

如果您想知道特定软件包的文件在哪里,可以使用Synaptic软件包管理器。只需搜索软件包,然后查看其安装文件即可。

我认为这个问题将因需要同等的理由而得到改善。例如,“让我看看已经安装的内容和可以运行的内容”与“我正在尝试查找该软件的保存游戏之间有区别,所以我可以摆弄”。甚至“我怀疑该程序可以调整的一些设置文件/ ini文件”。这些全都可能是“ Program Files”问题,但是这里有不同的答案。

相关(但可能不应该被认为是重复的):如何理解Ubuntu文件系统布局?

#1 楼

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



评论


此答案被忽略,它应该位于顶部。

– voldemort
17年5月17日在13:27

当我看到这样的布局时,我意识到现代发行版试图隐藏这些内容也就不足为奇了。真是一团糟(美丽的一团糟)。而且我完全不同意这种布局-很棒,但是例如/ etc拥有与O / S配置一样多的应用程序配置,因此感觉应该在最右边第二个黄色的左侧“特定于用户”的问题作为“否”分支。例如,apache是​​一个应用程序,不是操作系统必需的。 Docker,Folding @ Home,VMware或使用/ etc进行配置的其他主机都不是。很棒的图。

–可卡因
20年5月5日在14:12

#2 楼

[编辑:您可能应该改为查看d4nyll的答案,这是一个漂亮的图,充当Linux文件系统的广泛初学者指南。] 。但是,“程序文件”的直接等效项可能是/bin/usr/bin(请参阅文件系统层次结构标准)。该目录包含大多数程序的各种支持文件。



但是可能没有直接等效的文件,例如,因为库文件在整个系统中共享(在/opt中)和选项是用户指定的(在用户的主目录中)或普遍位于/usr/share中。

因此,通过deb文件,存储库或内部版本安装程序可能会将文件放置在所有这些位置。

[编辑]另外要注意的是,还有/lib/etc。加上/sbin/usr/sbin甚至/usr/local/bin。因此绝对不能直接与/opt/bin进行比较!

评论


/ opt呢?我已经看到以前以与Program Files类似的方式保存了许多(通常是封闭源代码或基于应用程序的)程序。

–库皮亚科斯
13年5月14日在0:12

似乎是这样,随着Ubuntu Software Center在这里交付其游戏的出现。但是即使这样,也很难直接比较,是吗?这些天可能最接近的东西。

–可卡因
13年5月14日在23:03

有关/ opt目录的用途,请参见askubuntu.com/a/294492/41499。

– Gerhard Burger
13年7月5日在6:36

/ usr / local / bin是用户/公司可能不常用的软件的半公共位置。

–马克·斯图尔特
18年11月21日在0:44

这个操作系统比Windows更好吗?我切换到它来尝试它是网络开发的魅力。但是我不明白那些层次结构的东西...我已经安装了PhpStorm,它现在位于1238128文件夹中..

–托马·托莫夫(Toma Tomov)
19年7月5日在20:48

#3 楼

编辑:另请参阅下面的d4nyll答案,以获得出色且对初学者友好的地图!

请阅读以下我的答案,以获取有关PATH环境变量是什么,.desktop文件是什么以及如何查找使用各种linux命令的特定程序。

原始答案:


没有简单的答案。


/bin/usr/bin/usr/share


如其他答案所述,您可以在/bin/usr/bin下找到大多数可执行文件,并且支持文件安装在/usr/share中。


/usr/local/opt


但是Ubuntu可以在其中安装应用程序的目录更多。 PATH变量(确定在何处搜索输入的命令)可能会为您提供线索,我的模样(终端中的echo $PATH):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games


看到/usr/local中安装了一些软件,并且有自己的目录和bin。安装了许多程序的另一个地方是/opt。这些位置的属性由Filesystem Hierarchy Standard解释,这是一本很好的书。不幸的是,/opt/usr/local之间的区别并没有得到很好的解释,Unix堆栈交换上的某个人有一个更详尽的解释:



/usr/local是一个安装以下文件的地方管理员,通常使用make命令。这样做的目的是避免与操作系统中的文件冲突,否则该文件可能会被覆盖或覆盖本地文件。例如。 /usr/bin/foo是操作系统的一部分,而/usr/local/bin/foo是本地替代品,

/opt是一个目录,用于将未捆绑的软件包安装在各自的子目录中。它们已经由独立的第三方软件发行商提供了完整的软件包。例如,将someapp安装在/opt/someapp中,其命令之一将在/opt/someapp/bin/foo中[然后通常在binPATH目录之一中建立符号链接,或者从桌面文件调用该程序(如下所示)] 。


查找特定程序或命令


.desktop文件

查找特定程序的安装位置,您可以执行许多步骤。首先,您需要找到其.desktop文件。桌面文件类似于Windows中的快捷方式,对于系统应用程序,它们位于/usr/share/applications中。仅对当前用户可用的应用程序的桌面文件在~/.local/share/applications中。以具有桌面文件/usr/share/applications/google-chrome.desktop的Google Chrome为例,查找以Exec=开头的行,这确定了如何启动Google Chrome。它说:

Exec=/opt/google/chrome/google-chrome


所以您知道Google Chrome在/opt中。

现在是位于/usr/share/applications/firefox.desktop的Mozilla Firefox浏览器。它只是说

Exec=firefox %u


起初这似乎并没有多大帮助,但是随后您意识到firefox必须位于PATH变量中的目录中(最有可能是bin),我们可以对其进行查找(请参见下文)。

查找命令

要查找命令,可以使用以下一种或多种方法: typewhichwhereis(我已经在线提供了其手册页的链接)。



类型:它描述了一条命令,并指出了如何解释该命令用作命令名称。命令的可能类型为:


别名(shell别名)
函数(shell函数)
builtin(shell内置)
file(磁盘文件) )
关键字(shell保留字)

(类型本身是内置的shell,请与type type:P一起尝试)

执行type firefox可以为我们提供

firefox is /usr/bin/firefox


这就是我们想要的知道


如果命令是文件(已通过type检查),则还可以使用:



其中:显示了命令的完整路径,

执行which firefox可以给我们

 /usr/bin/firefox



其中:找到二进制文件,源文件和命令的手册页文件。

执行whereis firefox给我们

firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz



奖金

您可以使用/usr/bin/firefox更仔细地检查ls -l /usr/bin/firefox,这将给出:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*


看来,/usr/bin/firefox只是对脚本/usr/lib/firefox/firefox.sh的符号链接。如果检查脚本,则会发现该脚本调用/usr/lib/firefox/firefox
您现在可以安心了:)

评论


很酷的答案。一个问题,什么是符号链接? Windows快捷方式是否等效?

– Quazi Irfan
2015年6月2日23:35



@iamcreasy谢谢!是的,它们是一种捷径,但其主要目的是避免文件复制。 Windows快捷方式更具有可比性。桌面文件,可用于创建例如开始菜单项。

– Gerhard Burger
2015年6月3日5:37



为什么有人在符号链接上使用.desktop文件,反之亦然?

– Quazi Irfan
2015年6月3日,10:48

@iamcreasy在.desktop文件中,您可以添加其他信息,例如描述和图标(请参见此处的示例:standards.freedesktop.org/desktop-entry-spec/latest/apa.html),它是“常规”文件。符号链接是仅链接到另一个文件的“特殊”文件。我发现这很难正确解释,但也许您可以在这里找到更好的答案:superuser.com/questions/253935/…

– Gerhard Burger
2015年6月3日,11:54

#4 楼

没有单个目录与Program Files文件夹完全等效。 Linux安排事物的方式与Windows有很多不同。

在Windows中,我们安装的每个程序在Program Files目录中都有其自己的目录。在该目录中,将为不同类型的文件创建其他子目录。子目录没有固定的结构。程序自行决定要调用每个目录的内容以及要在何处放置内容。

但是在Linux中,安装了程序后,会将不同类型的文件复制到不同的位置。可执行文件复制到/ usr / bin,库文件复制到/ usr / lib,文档复制到/ usr / man,/ usr / info和/ usr / doc中的一个或多个。如果有配置文件,它们通常位于用户的主目录或/ etc中。

评论


是否有任何理由根据文件的目的而不是根据文件所属的应用程序对文件进行分组?从系统管理员的角度来看,“ Unix文件分组样式”通常更方便吗?

– jojman
16-11-17在23:58

并不是的。我认为这是他们的设计选择。尽管它确实使制作诸如“ man”,“ info”之类的实用程序或许多其他依赖此文件结构的实用程序成为可能。例如,“ man”知道在哪里可以找到每个命令的文档。如果没有标准的文档位置,则无法工作。

– binW
16-11-23在15:27

#5 楼

在Ubuntu中,C:\Program Files文件夹为/usr/bin/bin看起来更像C:\windows

从文件系统层次结构的手册页: Ubuntu将几乎所有应用程序都放在一个目录中,例如/usr/bin。 Windows将创建一个新文件夹,例如Mozilla Firefox,并在其中添加配置,可执行文件,DLL,图像等。 Ubuntu将它们拆分,可执行文件放在/usr/bin中,系统范围内的配置在/etc中,共享对象在/usr/lib中,映像在/usr/share中,...

#6 楼

Linux的“程序文件”在整个层次结构中。它可能位于/usr/bin/bin/opt/...或其他目录中。然后,我对如何查看程序安装中安装的文件有了一个想法。


通过在终端上发出synaptic来安装sudo apt-get install synaptic
查找所需的软件包,在搜索文本输入。
右键单击该程序包,然后选择Properties
移至Installed File选项卡。结果与dpkg -L package_name相同。
您将找到该软件包安装的所有文件。

这是因为linux根据类型将已安装的文件分别移动到目录中。


可执行文件转到/usr/bin/bin
图标转到/usr/share/icons或在~/.local/share/icons上本地化。通常在/opt/usr/share/applications

~/.local/share/applications上的文档

/usr/share/doc上的库/模块


以及许多其他目录。 (CMIIW,接受更正)

#7 楼

在这个答案中,当我说Unix时,我指的是Unix以及类似Unix的操作系统。

Ubuntu确实没有一个programs文件夹,其中包含每个程序的所有数据。在Unix和类似Unix的操作系统中,“一切”都是文件,甚至包括终端命令。它们也是文件。 Unix处理程序的方式可能非常混乱,并且同时组织起来。

程序的图标存储在/ usr / share / icons / *中,程序可执行文件通常存储在/ usr / bin,/ bin和其他带有bin目录的位置(bin是obv的二进制缩写) )。程序所依赖的库位于/ lib中。

因此,最终不会得到一个包含一个程序的所有数据的目录,而是该程序的数据散布开了。虽然乍一看似乎很杂乱无章,但它允许共享诸如库和图标之类的标准内容。

由于每个文件都具有权限,老实说,将所有内容都作为文件的想法非常出色。它使Unix MUCH比其他操作系统更安全。

#8 楼

Linux和Windows程序的安装方式完全不同。

Windows中的常见模式是程序。或一堆程序,来自一个供应商进入C:\ programs \ vendor或类似的目录中自己的子目录。

在Linux中,您的文件根据其功能分为特定的子目录。有用于库,图标,手册页,日志文件,配置等的目录。您可以使用其中一些,但是系统将管理所有这些。它们没有耦合在一起,而是与其他程序中的类似文件一起存在。

因此,在常规的Linux实现中,没有真正等同于Windows目录结构的东西。

#9 楼

如果安装自己的程序,则建议使用1个文件夹:


/ opt



#10 楼

查看/bin/usr/bin以及任何其他表示bin的内容。