文件系统
在 Windows 中,文件分区以盘符的形式表示,如 「C盘」,「D盘」这样的说法,而Linux/Unix系列采用 “树状结构” 的挂载方式:
整个系统的文件都从 / 开始,像一棵树一样
10:43:25 with imicola in ~ is 📦 None …
➜ tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── init
├── lib -> usr/lib
├── lib64 -> usr/lib
├── lost+found
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/bin
├── srv
├── sys
├── tmp
├── usr
└── var其他的分区以挂载 (mount) 的形式「挂」在了这棵树上,比如 mnt/下就挂载了window的磁盘
/下常见文件作用
/bin
存储必须的程序文件,对所有用户都可用。有的发行版会将这个文件链接到 /user/bin 上实现更方便的管理
/boot
存储在启动系统时需要的文件
/dev
存储设备文件
[!什么是设备文件?]
在 Linux 的哲学中,存在着「一切皆文件」这样的思想。设备文件就是计算机设备抽象成文件的形式,程序和用户可以以读写普通文件的方式向这些文件输入内容,或者从文件中获取内容。系统驱动程序会相应处理用户对对应设备文件的输入和输出。
有一些常用的设备文件如:
/dev/null:总是返回空(EOF)数据。/dev/zero:总是返回零数据。/dev/urandom:输出随机数据。
/etc
存储系统和程序的配置文件。
/home
用户的家目录。存储用户自己的信息。
/lib
存放系统运行必须的程序库文件。
/media 和 /mnt
这两个目录都用于挂载其他的文件系统。/media 用于可移除的文件系统(如光盘),而 /mnt 用于临时使用。
/opt
存放额外的程序包。一般将一些大型的、商业的应用程序放置在这个目录。
/root
root 用户的家目录。
/run
系统运行时的数据。在每次启动时,里面的数据都会被删除。
/sbin
存储用于系统管理,以及仅允许 root 用户使用的程序。如 fsck(文件系统修复程序)、reboot(重启系统)、useradd(添加用户)等。
/srv
存储网络服务的数据。
/tmp
临时目录,所有用户都可使用。
/usr
大多数软件都会安装在此处。其下有一些目录与 / 下的结构相似,如:
/usr/bin/usr/lib/usr/sbin
此外,还有一些目录:
/usr/include: 存储系统通用的 C 头文件。当然,里面会有你非常熟悉的头文件,如stdio.h。/usr/local: 存储系统管理员自己安装的程序,这些文件不受系统的软件管理机制(如apt)控制。/usr/local里面的层次结构和/usr相似。/usr/share: 存储程序的数据文件(如man文档、GUI 程序使用的图片等)。
Usrmerge
近年来,部分发行版选择将 /usr/bin、/usr/sbin、/usr/lib 与根目录下的 /bin、/sbin、/lib 合并,根目录下的对应目录软链接到 /usr 下的目录,以简化文件结构。
Ubuntu 与 Debian 中可以安装 usrmerge 软件包来进行转换。
/var
存储会发生变化的程序相关文件。例如下面的目录:
/var/log:存储程序的日志文件。/var/lib:存储程序自身的状态信息(如 lock file)。这个目录和library的关系并不大。/var/run:存储程序运行时的数据(部分发行版会将该目录符号链接到/run目录)。/var/spool:存储「等待进一步处理」的程序数据。