Linux文件系统的结构从终端窗口探索Linux目录树结构的工具

xzdxmynet 发布于 2024-04-26 阅读(39)

linux应用程序开发详解_linux应用开发是做什么的_linux应用程序开发

本教程将帮助您快速了解Linux文件系统。

——保罗·布朗

有用的原始链接

请访问文章末尾的“原始链接”,获取可点击的文本链接、全尺寸原始图像和相关文章。

致谢

编译自 |

作者|保罗·布朗

译者| 总翻译:15篇 投稿时间:139天

本教程将帮助您快速了解Linux文件系统。

早在 1996 年,在我真正理解文件系统的结构之前,我就学会了如何在我的全新 Linux 上安装软件。 这是一个问题,但对于程序来说并不是一个大问题,因为即使我不知道实际的可执行文件在哪里,它们也会神奇地工作。 问题是文档。

您知道,当时的 Linux 并不像今天这样直观、用户友好的系统。 你必须读很多书。 您必须了解 CRT 显示器的扫描频率、拨号调制解调器噪音的来龙去脉,以及数百项其他知识。 我很快意识到我需要花一些时间来掌握目录的组织方式以及 /etc (不适用于“其他”文件)、/usr (不适用于“用户”文件)和 /bin (不适用于“垃圾”)的意思。

本教程将帮助您比我更快地理解这一点。

结构

从终端窗口探索 Linux 文件系统是有道理的,不是因为作者是个脾气暴躁的老人,对新来的孩子和他们漂亮的图形工具不感兴趣(尽管对某些人来说确实如此),而是因为终端,尽管只是文本界面是一个可以更好的展示Linux目录树结构的工具。

事实上,为了帮助您理解这一切,您应该安装的第一个工具称为树。 如果您使用 or,您可以:

  1. sudo apt install tree

在红帽上或:

  1. sudo dnf install tree

对于 SUSE/ 您可以使用:

  1. sudo zypper install tree

要使用 Arch(、、等),请使用:

  1. sudo pacman -S tree

……ETC。

安装后,在终端窗口中运行 tree 命令:

  1. tree /

上述命令中的/指的是根目录。 系统中的所有其他目录都是从根目录分支出来的。 当您运行tree命令并告诉它从根目录开始时,您可以看到整个目录树,系统中的所有目录及其子目录以及它们的文件。

如果你已经使用你的系统有一段时间了,这可能需要一段时间,因为即使你自己没有生成很多文件,Linux系统及其应用程序总是在记录、缓存和存储各种临时文件。 文件系统中的条目数量可能会快速增长。

不过,不要感到不知所措。 相反,试试这个:

  1. tree -L 1 /

您应该看到如图 1 所示的内容。

上面的命令可以翻译为“只显示以/(根目录)开头的第一级目录树”。 -L 选项告诉树您想要查看多少级目录。

大多数 Linux 发行版都会向您显示与上图中看到的相同或非常相似的结构。 这意味着,即使您现在感到困惑,只要掌握了这一点,您就将掌握世界上大多数(如果不是全部)的 Linux 文件系统。

为了让您开始控制路径,让我们看看每个目录的用途。 当我们查看每个目录时,您可以使用 ls 来查看其内容。

目录

从上到下,看到的目录如下

/垃圾桶

/bin目录是一个目录,里面包含一些二进制文件,也就是一些可以运行的应用程序。 在此目录中,您将找到上面提到的 ls 程序,以及用于创建、删除和移动文件和目录的基本工具。 还有其他程序等。文件系统树的其他部分还有更多 bin 目录,但我们稍后会讨论这些目录。

/启动

/boot 目录包含启动系统所需的文件。 我必须说吗? 好吧,我会说:别管它! 如果你弄乱了其中一个文件,你可能无法运行你的 Linux,并且修复损坏的系统是一件非常痛苦的事情。 另一方面,不要太担心无意中破坏您的系统:您必须拥有超级用户权限才能执行此操作。

/dev

`/dev 目录包含设备文件。 其中许多是在启动时甚至运行时生成的。 例如,如果您将新的网络摄像头或 USB 闪存驱动器连接到您的计算机,则会自动弹出一个新的设备条目。

/ETC

/etc 目录名称可能会变得非常混乱。 /etc 得名于最早的 Unix 系统,它的字面意思是“”(类似的东西),因为它是系统文件管理员不确定该放在哪里的文件的垃圾场。

现在,更恰当地说 /etc 是“要配置的所有内容”,因为它包含大多数(如果不是全部)系统配置文件。 例如,包含系统名称、用户及其密码、网络上计算机的名称以及硬盘驱动器上的分区安装位置和时间的文件都在这里。 再次强调,如果您是 Linux 新手,最好不要在这里阅读太多内容,直到您更好地了解系统的工作原理。

/家

/home 是您可以找到用户的个人目录的位置。 就我而言,/home 下有两个目录:/home/paul,其中包含我的所有内容,另一个目录是 /home/guest,以防访客需要使用我的计算机。

/lib

/lib 是库文件所在的位置。 库是包含应用程序可以使用的代码的文件。 它们包含应用程序用来在桌面上绘制窗口、控制外围设备或将文件发送到硬盘驱动器的代码片段。

文件系统中散布着更多的 lib 目录,但直接挂载在 / 上的 /lib 目录很特殊,因为除其他外,它包含所有重要的内核模块。 内核模块是让你的显卡、声卡、WiFi、打印机等工作的驱动程序。

/媒体

在 /media 目录中,当您插入外部存储并尝试访问它时,它将自动挂载。 与此列表中的大多数其他项目不同,/media 的历史可以追溯到 20 世纪 70 年代,主要是因为存储(USB 记忆棒、USB 硬盘驱动器、SD 卡、外部 SSD 等)是在计算机运行时动态插入和检测的。 这只是近几年才发生的事情。

/mnt

然而,/mnt 目录是过去的残余。 您可以在此处手动挂载存储设备或分区。 现在不常用了。

/选择

/opt 目录通常是您编译软件的位置(也就是说,您从源代码构建它,而不是从系统的软件存储库安装它)。 应用程序将最终出现在 /opt/bin 目录中,而库将出现在 /opt/lib 目录中。

稍微题外话:应用程序和库的另一个地方是 /usr/local,当你在这里安装软件时,还有 /usr/local/bin 和 /usr/local/lib 目录。 开发人员如何配置文件来控制编译和安装过程决定了软件的安装位置。

/进程

/proc 和 /dev 一样都是虚拟目录。 它包含有关您的计算机的信息,例如有关 CPU 和 Linux 系统运行的内核的信息。 与 /dev 一样,文件和目录是在计算机启动或运行时创建的,并在系统运行时发生更改。

/根

/root 是系统超级用户(也称为“管理员”)的主目录。 它与其他用户的主目录分开,因为您不应该碰它。 所以,伙计们,把你自己的东西放在你自己的目录中。

/跑步

/run 是另一个新目录。 系统进程出于自己不可告人的原因使用它来存储临时数据。 这是另一个您不应该触摸的文件夹。

/sbin

/sbin 与 /bin 类似,但它包含只有超级用户(即开头的 s)需要的应用程序。 您可以使用 sudo 命令来使用这些应用程序,该命令暂时允许您在许多 Linux 发行版上拥有超级用户权限。 /sbin 目录通常包含可以安装、删除和格式化各种内容的工具。 正如您可以想象的那样,如果使用不当,其中一些命令可能会致命,因此请小心处理。

/usr

/usr 目录是早期 UNIX 用户的主目录所在的位置。 然而,正如我们在上面看到的,现在 /home 是用户保存东西的地方。 如今,/usr 包含大量目录,这些目录又包含应用程序、库、文档、壁纸、图标以及应用程序和服务需要共享的许多其他内容。

您还可以在 /usr 目录中找到 bin、sbin 和 lib 目录。 它们和挂载到根目录的有什么区别? 现在差别已经没有那么大了。 早期,/bin目录(挂载在根目录下)只包含一些基本命令,如ls、mv、rm等; 这些是在安装系统时预装的一些命令,用于维护系统。 一个基本命令。 /usr/bin 目录包含用户安装和工作时使用的软件,例如文字处理器、浏览器和一些其他软件。

但许多现代 Linux 发行版只是将所有内容放在 /usr/bin 中,并让 /bin 指向 /usr/bin,以防完全删除它会破坏某些内容。 因此, 、 和 Mint 仍然将 /bin 和 /usr/bin (以及 /sbin 和 /usr/sbin)分开; 其他的,例如 Arch 及其衍生产品,只有一个用于存储二进制程序的“真实”目录 /usr /bin,任何剩余的 bin 目录都是指向 /usr/bin` 的“假”目录。

/srv

/srv 目录包含服务器的数据。 如果您在 Linux 计算机上运行 Web 服务器,您网站的 HTML 文件将放置在 /srv/http(或 /srv/www)中。 如果您正在运行 FTP 服务器,您的文件将放置在 /srv/ftp 中。

/系统

/sys 是另一个虚拟目录,类似于 /proc 和 /dev,也包含有关连接到计算机的设备的信息。

在某些情况下,您还可以操纵这些设备。 例如,我可以通过修改 /sys//:00/0000:00:02.0/drm/card1/card1-eDP-1// 中存储的值来更改笔记本电脑屏幕的亮度(在您的计算机上,您可能会是不同的文件)。 但要做到这一点,您必须成为超级用户。 原因是,与许多其他虚拟目录一样,乱序 /sys 中的内容和文件可能很危险,并且可能会破坏系统。 直到你确信你知道自己在做什么。 否则不要碰它。

/tmp

/tmp 包含临时文件,通常由正在运行的应用程序放置。 文件和目录通常(并非总是)包含应用程序现在不需要但以后可能需要的数据。

您还可以使用 /tmp 来存储您自己的临时文件 - /tmp 是安装在根目录下的少数目录之一,您实际上可以与它交互而无需成为超级用户。

/var

/var 最初如此命名是因为它的内容被认为是可变的,因为它经常更改。 今天,它有点用词不当,因为还有许多其他目录也包含经常更改的数据,尤其是我们上面看到的虚拟目录。

无论如何,/var 目录包含放置在/var/log 子目录中的日志文件等。 日志是记录系统中发生的事件的文件。 如果内核出现问题,则会记录到 /var/log 下的文件中; 如果有人试图从外部闯入您的计算机,您的防火墙也会记录该尝试。 它还包含任务的假脱机程序。 这些“任务”可能是您发送到共享打印机的任务,这些任务必须等待执行,因为另一个用户正在打印长文档,或者邮件等待发送给系统上的用户。

您的系统可能还有一些我们上面没有提到的目录。 例如,在屏幕截图中,有一个 /snap 目录。 这是因为此屏幕截图是在系统上截取的。 Snap[1] 软件包最近被用作分发软件的一种方式。 /snap 目录包含从 snap 安装的所有文件和软件。

进一步的研究

这里只讨论根目录,但许多子目录都指向它们自己的文件和子目录集。 图 2 概述了基本文件系统(图像在 Paul 的 CC BY-SA 许可下提供),总结了每个目录的用途 [2]。

图 2:标准 Unix 文件系统

要亲自探索文件系统,请使用 cd 命令:cd 将带您到您选择的目录(cd 代表更改目录)。

如果你不知道你在哪里,pwd会告诉你你在哪里(pwd代表打印工作目录)。 同时,cd命令将直接带你到你自己的主目录,而不需要任何选项或参数。 这是一个安全又舒适的地方。

最后,cd .. 会将您带到上层目录,这将使您更接近根目录。 如果你在/usr/share/目录下,然后执行cd ..命令,就会跳转到/usr/share目录

要查看目录中的内容,请使用 ls 或仅使用 l 列出您所在目录的内容。

当然,您始终可以使用树来获取目录内容的概述。 在 /usr/share 上尝试一下 - 那里有很多有趣的东西。

总结

尽管 Linux 发行版之间存在细微的差异,但它们的文件系统的布局非常相似。 你可以这么说:一旦你了解了一个,你就了解了所有。 了解文件系统的最好方法就是探索它。 因此,使用 tree、ls 和 cd 进入未知领域。

仅查看文件系统不会损坏文件系统,因此请从一个目录移动到另一个目录并进行浏览。 很快您就会发现 Linux 文件系统及其布局确实有意义,并且您会直观地知道在哪里可以找到应用程序、文档和其他资源。

通过 Linux 基金会和 edX 的免费“Linux 入门[3]”课程了解有关 Linux 的更多信息。

通过:

作者:PAUL BROWN[5]选题:译者:校对者:wxy

本文由 LCTT 原创编译,Linux China 自豪推出

标签:  linux系统 linux服务器 文件目录 bin linux文件系统 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。