英语:PaulBrown,翻译:Linux中国/amwps290
/article-9798-1.html
早在1996年,在真正理解文件系统的结构之前,我就学会了怎么在我崭新的Linux上安装软件。这是一个问题,但对程序来说不是大问题,由于虽然我不晓得实际的可执行文件在那里,它们也会神奇地工作。问题在于文档。
你晓得,那时侯,Linux不是像昨天这样直观、用户友好的系统。你必须读好多东西。你必须晓得你的CRT显示器的扫描频度以及拔号调制混频器的噪声来龙去脉,以及其他数以百计的事情。我很快就意识到我须要花一些时间来把握目录的组织形式以及/etc(不是用于“其它”文件),/usr(不是用于“用户”文件)和/bin(不是“垃圾桶”)的意思。
本教程将帮助你比我当时更快地了解这种。
结构
从终端窗口探求Linux文件系统是有道理的,这并不是由于作者是一个性子急躁的奶奶,而且对新女儿和她们漂亮的图形工具不以为然(虽然个别事实这么),而是由于终端,虽然只是文本界面linux的ftp服务,才是更好地显示Linux目录树结构的工具。
事实上,帮助你了解这一切的、应该首先安装的第一个工具的名为:tree。假如你正在使用Ubuntu或Debian,你可以:
sudoaptinstalltree
在RedHat或Fedora:
sudodnfinstalltree
对于SUSE/openSUSE可以使用zypper:
sudozypperinstalltree
对于使用Arch(Manjaro,Antergos,等等)使用:
sudopacman-Stree
……等等。
一旦安装好,在终端窗口运行tree:
tree/
上述指令中的/指的是根目录。系统中的其他目录都是从根目录分支而出,当你运行tree,但是告诉它从根目录开始,这么你就可以看见整个目录树,系统中的所有目录及其子目录,还有它们的文件。
假如你早已使用你的系统有一段时间了,这可能须要一段时间,由于就算你自己还没有生成好多文件,Linux系统及其应用程序总是在记录、缓存和储存各类临时文件。文件系统中的条目数目会快速下降。
不过,不要倍感不知所措。相反,试试这个:
tree-L1/
你应当见到如图1所示。
tree
里面的指令可以翻译为“只显示以/(根目录)开头的目录树的第一级”。-L选项告诉树你想听到多少层目录。
大多数Linux发行版还会向你显示与你在上图中见到的相同或特别类似的结构。这意味着,虽然你如今倍感疑惑,把握这一点,你将把握大部份(假如不是全部的话)全世界的Linux文件系统。
为了让你开始走上掌控之路,让我们瞧瞧每位目录的用途。当我们查看每一个目录的时侯,你可以使用ls来查看她们的内容。
目录
从上到下,你所看见的目录如下
/bin
/bin目录是包含一些二补码文件的目录,即可以运行的一些应用程序。你会在这个目录中找到里面提及的ls程序qq for linux,以及用于新建和删掉文件和目录、移动它们基本工具。还有其它一些程序,等等。文件系统树的其他部份有更多的bin目录,但我们将在一会儿讨论这种目录。
/boot
/boot目录包含启动系统所需的文件。我必需要说吗?好吧,我会说:不要动它!假如你在这里弄乱了其中一个文件,你可能难以运行你的Linux,修补被破坏的系统是十分苦闷的一件事。另一方面,不要太害怕无意中破坏系统:你必须拥有超级用户权限能够执行此操作。
/dev
/dev目录包含设备文件。其中许多是在启动时或甚至在运行时生成的。诸如,假如你将新的网路摄像头或USB随身碟联接到你的机器中,则会手动弹出一个新的设备条目。
/etc
/etc的目录名称会让人显得特别的苦恼。/etc得名于最早的Unix系统们,它的字面意思是“etcetera”(诸这么类),由于它是系统文件管理员不确定在那里放置的文件的垃圾场。
如今,说/etc是“要配置的所有内容EverythingToConfigure”更为恰当,由于它包含大部份(假如不是全部的话)的系统配置文件。诸如,包含系统名称、用户及其密码、网络上计算机名称以及硬碟上分区的安装位置和时间的文件都在这儿。再说一遍,假如你是Linux的菜鸟,最好是不要在这儿接触太多,直至你对系统的工作有更好的理解。
/home
/home是你可以找到用户个人目录的地方。在我的情况下,/home下有两个目录:/home/paul,其中包含我所有的东西;另外一个目录是/home/guest目录,以防有顾客须要使用我的笔记本。
/lib
/lib是库文件所在的地方。库是包含应用程序可以使用的代码文件。它们包含应用程序用于在桌面上勾画窗口、控制外围设备或将文件发送到硬碟的代码片断。
在文件系统周围散播着更多的lib目录,并且这个直接挂载在/的/lib目录是特殊的,除此之外,它包含了所有重要的内核模块。内核模块是使你的主板、声卡、WiFi、打印机等工作的驱动程序。
/media
在/media目录中,当你插入外部储存器企图访问它时,将手动挂载它。与此列表中的大多数其他项目不同,/media并不溯源到1970年代,主要是由于当计算机正在运行而动态地插入和测量储存(U盘、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目录(挂载在根目录下的)只会包含一些基本的命令linux的ftp服务,比如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中的值来修改电脑笔记本屏幕的照度(在你的机器上你可能会有不同的文件)。但要做到这一点,你必须成为超级用户。缘由是,与许多其它虚拟目录一样,在/sys中搅乱内容和文件可能是危险的,你可能会破坏系统。直至你确信你晓得你在做哪些。否则不要动它。
/tmp
/tmp包含临时文件,一般由正在运行的应用程序放置。文件和目录一般(并非总是)包含应用程序如今不须要但之后可能须要的数据。
你还可以使用/tmp来储存你自己的临时文件——/tmp是少数挂载到根目录下而你可以在不成为超级用户的情况下与它进行实际交互的目录之一。
/var
/var最初被这么命名是由于它的内容被觉得是可变的variable,由于它时常变化。明天,它有点用词不当,由于还有许多其他目录也包含频繁修改的数据,非常是我们里面听到的虚拟目录。
不管如何,/var目录包含了置于/var/log子目录的日志文件之类。日志是记录系统中发生的风波的文件。假如内核中出现了哪些问题,它将被记录到/var/log下的文件中;假如有人企图从外部侵入你的计算机,你的防火墙也将记录尝试。它还包含用于任务的假脱机程序。这种“任务”可以是你发送给共享复印机必须等待执行的任务,由于另一个用户正在复印一个长文档,或则是等待提交给系统上的用户的电邮。
你的系统可能还有一些我们里面没有提及的目录。比如,在屏幕截图中,有一个/snap目录。这是由于这张截图是在Ubuntu系统上截取的。Ubuntu近来将snap包作为一种分发软件的形式。/snap目录包含所有文件和从snaps安装的软件。
更深入的研究
这儿仅仅谈了根目录,并且许多子目录都指向它们自己的一组文件和子目录。图2给出了基本文件系统的总体概念(图片是在PaulGardner的CCBY-SA许可下提供的),Wikipedia对每位目录的用途进行了总结。
图2:标准Unix文件系统
要自行探求文件系统,请使用cd命令:cd将带你到你所选择的目录(cd代表修改目录)。
假如你不晓得你在哪里,pwd会告诉你,你究竟在那里,(pwd代表复印工作目录),同时cd命令在没有任何选项或则参数的时侯,将会直接带你到你自己的主目录,这是一个安全舒适的地方。
最后,cd..将会带你到上一层目录linux操作系统版本,会使你愈加接近根目录,假如你在/usr/share/wallpapers目录,之后你执行cd..命令,你将会跳转到/usr/share目录
要查看目录里有哪些内容,使用ls或这简单的使用l列举你所在目录的内容。
其实,你总是可以使用tree来获得目录中内容的概述。在/usr/share上试试——里面有好多有趣的东西。
总结
虽然Linux发行版之间存在细微差异,但它们的文件系统的布局十分相像。你可以如此说:一旦你了解一个,你都会都了解了。了解文件系统的最好方式就是探求它。为此,伴随tree,ls和cd步入未知的领域吧。
你不会只是由于查看文件系统就破坏了文件系统,因而请从一个目录联通到另一个目录并进行浏览。很快你才会发觉Linux文件系统及其布局的确很有意义,但是你会直观地晓得在那里可以找到应用程序,文档和其他资源。
【关于投稿】
假如你们有原创好文投稿,请直接给公号发送留言。
①留言格式:
【投稿】+《文章标题》+文章链接
②示例:
【投稿】《不要自诩是程序员,我十多年的IT职场总结》:
③最后请附上您的个人简介哈~
本文原创地址://gulass.cn/pnzlsazrjdjl.html编辑:刘遄,审核员:暂无