本教程将帮助你快速了解Linux文件系统。回到1996年,在我真正理解文件系统的结构之前,我学会了如何在我全新的Linux上安装软件。这是一个问题,但对于程序来说不是一个大问题,因为即使我不知道实际的可执行文件在哪里,它们也能神奇地工作。问题出在文档上。您知道,那时候的Linux并不是今天这样直观、用户友好的系统。你必须多读书。您必须知道CRT显示器扫描的频率以及拨号调制解调器噪音的来龙去脉,以及其他数百项内容。我很快意识到我需要花一些时间来掌握目录的组织方式和/etc(不适用于“其他”文件)、/usr(不适用于“用户”文件)和/bin(不适用于“垃圾”)的含义。本教程将帮助您比我更快地了解这些。结构从终端窗口探索Linux文件系统是有道理的,并不是因为作者是一个脾气暴躁的老人并且对新来的孩子和他们漂亮的图形工具不屑一顾(尽管有些道理),而是因为终端,尽管只有文本界面是一个更好的显示Linux目录树结构的工具。事实上,第一个应该首先安装来帮助你理解这一切的工具叫做:tree。如果您使用的是Ubuntu或Debian,您可以:sudoaptinstalltr??ee在RedHat或Fedora上:sudodnfinstalltr??ee对于SUSE/openSUSE,您可以使用zypper:sudozypperinstalltr??ee对于Arch(Manjaro、Antergos等)使用:sudopacman-S树...等等。安装后,在终端窗口中运行树命令:tree/上面命令中的/指的是根目录。系统中的每个其他目录都从根目录分支出来。当你运行tree命令并告诉它从根目录开始时,你可以看到整个目录树,系统中的所有目录及其子目录,以及它们的文件。如果你已经使用你的系统一段时间了,这可能需要一段时间,因为即使你自己没有生成很多文件,Linux系统及其应用程序也总是在记录、缓存和存储各种临时文件。文件系统中的条目数会快速增长。但是,不要感到不知所措。相反,试试这个:tree-L1/,您应该会看到类似图1的内容。tree上面的命令可以翻译为“只显示以/开头的目录树的第一级(根目录)”。-L选项告诉tree你想看到多少层目录。大多数Linux发行版都会向您显示与上图中相同或非常相似的结构。这意味着,即使您现在感到困惑,只要掌握了它,您就会掌握世界上大部分(如果不是全部)Linux文件系统。为了让您走上精通之路,让我们看看每个目录的作用。我们在查看各个目录的时候,可以使用ls来查看它们的内容。Directories从上到下,你看到的目录如下/bin/bin目录是一个包含一些二进制文件的目录,也就是一些可以运行的应用程序。在这个目录中,您会找到上面提到的ls程序,以及用于创建和删除文件和目录以及移动它们的基本工具。还有其他程序,等等。文件系统树的其他部分有更多的bin目录,但我们稍后会讨论这些目录。/boot/boot目录包含启动系统所需的文件。我必须说好吗,我会说:别碰它!如果你在这里弄乱了这些文件中的一个,你可能无法运行你的Linux,修复一个损坏的系统是一件很痛苦的事情。另一方面,不要太担心无意中破坏系统:您必须具有超级用户权限才能执行此操作。/dev`/dev目录包含设备文件。其中许多是在启动时甚至在运行时生成的。例如,如果您将新的网络摄像头或USB笔式驱动器连接到您的机器,则会自动弹出一个新的设备条目。/etc/etc目录名称可能会变得非常混乱。/etc的名字来源于最早的Unix系统,它的字面意思是“etcetera”(或其他),因为它是系统文件管理员不确定放在哪里的文件的垃圾场。现在,更恰当地说/etc是“要配置的一切”,因为它包含大部分(如果不是全部的话)系统配置文件。例如,包含系统名称、用户及其密码、网络上的计算机名称以及硬盘分区的安装位置和时间的文件都在这里。同样,如果您是Linux新手,最好不要在这里接触太多,直到您更好地了解系统的工作原理。/home/home是您可以找到用户主目录的地方。就我而言,/home下有两个目录:/home/paul,其中包含我所有的东西;和另一个目录,/home/guest,以防客人需要使用我的电脑。/lib/lib是库文件所在的位置。库是包含应用程序可以使用的代码的文件。它们包含应用程序用来在桌面上绘制窗口、控制外围设备或将文件发送到硬盘的代码片段。文件系统周围散布着更多的lib目录,但是这个直接挂载在/上的/lib目录是特殊的,除其他外,它包含所有重要的内核模块。内核模块是使您的显卡、声卡、WiFi、打印机等工作的驱动程序。/media在/media目录下,当你插入外部存储并尝试访问它时会自动挂载。与此列表中的大多数其他项目不同,/media并不能追溯??到1970年代,主要是因为存储(USB记忆棒、USB硬盘驱动器、SD卡、外部SSD等)它只是最近几年才出现的。/mnt但是,/mnt目录是过去的一些遗留物。这是您手动挂载存储设备或分区的地方。现在不常用了。/opt/opt目录通常是您编译软件的地方(也就是说,您从源代码构建,而不是从系统的存储库安装软件)。应用程序最终位于/opt/bin目录中,库位于/opt/lib目录中。稍微题外话:应用程序和库的另一个地方是/usr/local,在这里安装软件时,也会有/usr/local/bin和/usr/local/lib目录。开发者如何配置文件来控制编译安装过程,决定了软件的安装位置。/proc/proc,和/dev一样是一个虚拟目录。它包含有关您的计算机的信息,例如有关您的CPU和运行Linux系统的内核的信息。与/dev一样,文件和目录是在您的计算机启动或运行时创建的,因为您的系统正在运行和更改。/root/root是系统超级用户(也称为“管理员”)的主目录。它与其他用户的主目录是分开的,因为您不应该触摸它。所以把你自己的东西放在你自己的目录里,伙计们。/run/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以防删除它会完全破坏某些东西。因此,Debian、Ubuntu和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/sys是另一个类似于/proc和/dev的虚拟目录,它还包含有关连接到计算机的设备的信息。在某些情况下,您还可以操纵这些设备。例如,我可以通过修改/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight/brightness中存储的值(在您的You您的机器上可能有不同的文件)。但要做到这一点,您必须是超级用户。原因是,与许多其他虚拟目录一样,弄乱/sys中的内容和文件可能很危险,您可能会破坏系统。直到你确定你知道你在做什么。否则不要碰它。/tmp/tmp包含临时文件,通常由正在运行的应用程序放置。文件和目录通常(并非总是)包含应用程序现在不需要但以后可能需要的数据。您还可以使用/tmp来存储您自己的临时文件——/tmp是安装在根目录下的少数几个目录之一,您实际上可以与它交互而无需成为超级用户。/var/var最初如此命名是因为它的内容被认为是可变的,因为它经常更改。今天,它有点用词不当,因为还有许多其他目录也包含经常更改的数据,尤其是我们上面看到的虚拟目录。不管怎样,/var目录包含放置在/var/log子目录中的日志文件等。日志是记录系统中发生的事件的文件。如果内核出现问题,它会被记录到/var/log下的文件中;如果有人试图从外部闯入您的计算机,您的防火墙也会记录这次尝试。它还包含一个用于任务的假脱机程序。这些“任务”可以是您发送到共享打印机的任务,这些任务必须等待执行,因为另一个用户正在打印一个长文档,或者是等待传递给系统上的用户的邮件。您的系统可能还有一些我们上面没有提到的目录。比如截图中,有一个/snap目录。这是因为此屏幕截图是在Ubuntu系统上截取的。Ubuntu最近采用了snap包作为分发软件的方式。/snap目录包含从快照安装的所有文件和软件。深入挖掘我们在这里只讨论了根目录,但许多子目录都指向它们自己的文件和子目录集。图2概述了基本文件系统(图片由PaulGardner在CCBY-SA许可下提供),维基百科总结了每个目录的用途。图2:标准Unix文件系统要自己探索文件系统,请使用cd命令:cd会将您带到您选择的目录(cd代表更改目录)。如果你不知道自己在哪里,pwd会告诉你确切的位置,(pwd代表打印工作目录),cd命令会直接带你到你自己的主目录,不需要任何选项或参数,这是一个安全舒适的地方。***,cd..会带你到上层目录,这会让你更接近根目录。如果您在/usr/share/wallpapers目录中,并且执行cd..命令,您将跳转到/usr/share目录要查看目录中的内容,请使用ls或简单地使用l来列出wallpapers的内容您所在的目录。当然,您始终可以使用tree来概览目录中的内容。在/usr/share上试试——里面有很多有趣的东西。总结尽管Linux发行版之间存在细微差别,但它们的文件系统布局非常相似。你可以这样说:一旦你知道一个,你就知道所有的。了解文件系统的最好方法是探索它。因此,使用tree、ls和cd进入未知领域。你不会仅仅通过查看就破坏文件系统,所以从一个目录移动到另一个目录并浏览。您很快就会发现Linux文件系统及其布局确实很有意义,并且您会对在哪里可以找到应用程序、文档和其他资源有一个直观的认识。
