Linux 各个主要目录的意义
Linux 的目录繁多,下面一一介绍一下目录的作用:
dev home media opt bin
root srv tmp var boot etc lost+found
mnt proc run snap sys usr
(bin -> /usr/bin) (sbin -> /usr/sbin) (各种libxxx ->usr/libxxx)
预备知识——文件系统的类型
Linux 有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别.
- 普通文件:
如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。
- 目录文件:
包括文件名、子目录名及其指针。它是 Linux 储存文件名的唯一地方,可用ls列出目录文件。
- 连接文件:
是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"->"指向所连接的文件。
- 特殊文件:
Linux 的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,则一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。 Linux 无C:的概念,而是用/dev/had来自第一硬盘。
dev
/dev
目录是 devices
的缩写,它包含了所有的设备文件,包括硬件设备和虚拟设备。在 Linux 中,一切皆文件,设备也不例外。在 /dev
目录下,每个设备都有一个相应的设备文件,可以通过这些设备文件来操作设备。
例如,硬盘的设备文件是 /dev/sda
,光驱的设备文件是 /dev/cdrom
,鼠标的设备文件是 /dev/input/mice
,键盘的设备文件是 /dev/input/eventX
。
home
/home
目录是 Linux 操作系统中的用户主目录,每个用户都有一个独立的目录,用于存储该用户的个人文件和配置信息。例如,用户 mtds
的主目录就是 /home/mtds
。
media
/media
目录是 Linux 操作系统中自动挂载可移动设备的目录。当插入 USB、SD 卡等可移动设备时,系统会自动将其挂载到 /media
目录下的相应子目录中。
opt
/opt
目录是 Linux 操作系统中的可选软件包目录,通常用于存放第三方软件。这些软件包通常不是系统默认安装的软件包,而是由用户自行安装的。
具体地,比如在Fedora Core 5.0中,OpenOffice 就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;
通过源码包安装的软件,可以通过如下命令行指定安装目录 :
bin
这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系 统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去 /bin
目录下面查找是不是有ls这个程序。
Note
在 Ubuntu 20.04 中,/bin
是指向 /usr/bin
的链接,因此 /bin
目录实际不再存在。
sbin
大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和 /usr/sbin 或 /usr/local/sbin 目录是相似的;
我们记住一点就行,凡是目录sbin中包含的都是root权限才能执行的。
Note
在 Ubuntu 20.04 中,/sbin
是指向 /usr/sbin
的链接,因此 /sbin
目录实际不再存在。
root
/root
目录是 Linux 操作系统中的超级管理员 root
的主目录,用于存储 root
的个人文件和配置信息。
srv
/srv
目录是 Linux 操作系统中的服务目录,用于存放本地服务的数据。例如,Web 服务器的网页文件就可以存放在 /srv/www
目录中。
tmp
/tmp
目录是 Linux 操作系统中的临时文件目录,用于存放临时文件。这些文件通常是由程序在运行过程中产生的,不需要长期保存。比如,对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。
Warning
有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。
var
/var
目录是 Linux 操作系统中的可变数据目录,用于存放系统运行过程中产生的数据。例如,日志文件就可以存放在 /var/log
目录中。此外,还有 /var/cache
目录用于存放缓存文件,/var/lib
目录用于存放应用程序的数据文件等,/var/spool
目录为打印机、邮件、代理服务器等脱机目录等。
boot
/boot
目录是 Linux 操作系统中的启动目录,用于存放启动相关的文件,如内核文件和引导程序。
etc
/etc
目录是 Linux 操作系统中的配置文件目录,用于存放系统和应用程序的配置文件。
lost+found
/lost+found
目录是 Linux 操作系统中的恢复目录,用于存放文件系统恢复时找到的损坏文件和目录。
具体地,在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损 坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
mnt
/mnt
目录是另一个挂载点,用于挂载临时文件系统,例如 CD-ROM、NFS 网络文件系统等等。与 /media
目录类似,当挂载一个临时文件系统时,该文件系统会出现在 /mnt
目录下的一个子目录中。
proc
/proc
目录是一个虚拟文件系统,它不包含任何磁盘上的文件,而是由内核动态生成的。该目录下的文件提供了有关系统内核和进程的信息,例如系统内存使用情况、运行进程的信息等等。
run
/run
目录是一个临时文件系统,用于存储系统运行时的临时文件,例如 PID 文件、锁文件等等。该目录下的文件在系统启动时创建,在系统关闭时被删除。
sys
/sys
目录是一个虚拟文件系统,它提供了对系统硬件设备的访问和控制接口。该目录下的文件可以用于查看和修改硬件设备的状态,例如 CPU 和内存使用情况、硬件设备的驱动程序信息等等。
usr
/usr
目录是系统中最大的目录之一,它包含了许多用户程序和文件,例如系统命令、文档、库文件、头文件等等。该目录下的子目录通常按照程序类型进行组织,例如 /usr/bin
存储可执行文件,/usr/lib
存储库文件等等。
/usr/local
这里主要存放那些手动安装的软件,即不是通过 apt-get
等安装的软件。它和 /usr
目录具有相类似的目录结构。让软件包管理器来管理 /usr
目录,而把自定义的脚本(scripts)放到 /usr/local
目录下面,我想这应该是个不错的主意。
/usr/share
/usr/share
系统共用的东西存放地,比如 /usr/share/fonts
是字体目录,/usr/share/doc
和 /usr/share/man
帮助文件。
snap
/snap
目录是用于存储 Snap 包的目录。Snap 是一种跨 Linux 发行版的软件包格式,它包含了应用程序和所需的依赖项,可以在不同的 Linux 发行版之间移植。
lib, lib32, lib64, ...
在 Linux 操作系统中,lib
文件夹通常是用来存储共享库文件的。
共享库文件是一些可重用的代码模块,它们提供了一些常用的功能,例如输入输出、字符串处理、数学计算等等。
这些共享库文件可以被多个程序共享使用,从而减少了重复代码的开销,提高了程序的运行效率。在 Linux 系统中,共享库文件的命名方式通常是以 "lib" 开头,并以 ".so" 结尾。
- 例如,"libpthread.so" 是一个 POSIX 线程库的共享库文件。
Note
在 Ubuntu 20.04 中,/libxxx
是指向 /usr/libxxx
的链接。