Linux目录
FHS(Filesystem Hierarchy Standard),文件系统层次化标准,该标准规定了 Linux 系统中所有一级目录以及部分二级目录的用途。发布此标准的主要目的就是为了让用户清楚地了解每个目录应该存放什么类型的文件。
FHS 认为,Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:
(1) 所有目录都是由根目录衍生出来的;
(2) 根目录与系统的开机、修复、还原密切相关;
因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件,如表 1 所示。
一、常见一级目录
1. Linux根目录
| 一级目录 | 功能(作用) |
|---|---|
| /bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
| /boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
| /dev/ | 设备文件保存位置(键盘等硬件) |
| /etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
| /home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming |
| /lib/ | 系统调用的函数库保存位置 |
| /media/ | 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘 |
| /mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
| /misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的 |
| /opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件 |
| /root/ | root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下 |
| /sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
| /srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
| /tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
二、常见非一级目录
1. Linux /usr目录
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
| 子目录 | 功能(作用) |
|---|---|
| /usr/bin/ | 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行。 |
| /u1r/sbin/ | 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 |
| /usr/lib/ | 应用程序调用的函数库保存位置。 |
| /usr/XllR6/ | 图形界面系统保存位置。 |
| /usr/local/ | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置。 |
| /usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录。 |
| /usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中 |
| /usr/include | C/C++ 等编程语言头文件的放置目录 |
2. Linux /var 目录
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。
| /var子目录 | 功能(作用) |
|---|---|
| /var/lib/ | 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中 |
| /var/log/ | 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。 |
| /var/run/ | 一些服务和程序运行后,它们的 PID(进程 ID)保存位置 |
| /var/spool/ | 里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。 |
| /var/www/ | RPM 包安装的 Apache 的网页主目录 |
| /var/nis和/var/yp | NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录 |
| /var/tmp | 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
3. Linux的目录结构
-
根(/)相当于一个入口,文件的总入口,也是唯一入口
-
bin (sbin) 普通用户存放二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件
-
sbin 超级管理员可使用的二进制文件
-
boot 系统内核、存放开机启动文件
-
dev 硬件文件(黄色)
-
etc 放配置文件,用户配置,网卡配置等,配置文件等同于windows 注册表,一般都是文本文件
-
run 运行的内存中文件
-
tmp 临时文件 -t
-
usr应用程序和操作系统相关的文件
-
var日志文件,数据变化的
-
home 普通用户的家目录的上级目录zhangsan目录会在 home
-
root系统管理员的目录上 /root
-
lib 动态库文件 类似于windows 的dll文件
-
proc 主要保存系统的内核、进程、外部设备状态和网络状态等
-
media 可移动设备
-
mnt 默认挂载点
-
opt 第三方应用程序安装所在目录程序
文件管理
一、文件类型
1. 七类常见的linux的文件
-
— 普通文件 普通文件,包括纯文本文件、二进制文件、各种压缩文件等
-
d 目录文件directory
-
b 块设备文件block 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
-
c 字符设备character 这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用; 一个字符一个字符读取 /dev/zero (/dev/null)
-
l 符号链接文件link
-
p 管道文件pipe 主要用于进程间通信单向传输, 一个只读、另一个只写 ,其主要作用是解决多个程序同时存取一个文件所造成的错误。
-
s 套接字文件socket 套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。(可以双向)
| 第一个字符 | 文件类型 |
|---|---|
| - | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。 |
| d | 目录,类似 Windows 系统中的文件夹。 |
| b | 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。 |
| c | 字符设备文件,例如键盘、鼠标等。 |
| s | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。 |
| p | 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。 |
| l | 链接文件,类似 Windows 系统中的快捷方式。 |
注意:
file命令可以识别文件类型,文件后缀无法判断文件类型
2. 颜色表示的文件类型
- 黑色 普通文件
- 绿色 可执行文件
- 黄色 块设备文件
- 红色 压缩包
- 蓝色 文件夹
- 天蓝色 链接文件(快捷方式)
[root@localhost ~]# vim /etc/DIR_COLORS //颜色在这里显示
二、查看、切换、显示目录或文件
1. pwd(print work directory) 打印当前目录
命令格式::pwd
示例:
[root@localhost ~]# pwd //显示当前路径
/root
[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月 6 20:57 /bin -> usr/bin
[root@localhost bin]# pwd -P //显示真实路径
/usr/bin
2. cd(change directory)切换目录
命令格式::cd 空格 目标位置
| 命令 | 效果 |
|---|---|
| cd 或 cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
| cd - | 到前一次目录 |
| 一个点号“.”开头 | 表示以当前的工作目录作为起点 |
| 两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 |
| “~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
| "."开头文件 | 表示隐藏文件 |
示例:
[root@localhost ~]# cd /etc/ //切换到/etc目录
[root@localhost etc]#
[root@localhost etc]# cd //切换到当前用户家目录
[root@localhost ~]#
[root@localhost ~]# cd ~ //切换到当前用户家目录
[root@localhost ~]#
3. ls (list) 列出目录/文件的详细属性信息
生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)。生产环境中不能单独使用,需要配合通配符。
命令格式::ls 空格 [选项] [文件或目录… ]
命令选项::
| 选项 | 说明 |
|---|---|
| -l | 以长格式显示文件和目录列表 ll=ls -l |
| -a | 显示全部包括隐藏文件 |
| -A | 显示全部文件或隐藏文件,但不包括 . 和.. |
| -d | 只显示当前目录 |
| -h | 友好显示文件大小 |
| -R | 递归显示该目录及该目录的子目录下的所有内容 |
| --color | 显示颜色 |
| -S | 按从大到小排序 |
| -i | 显示inode号 |
| -t | 根据文件创建时间进行排序,由新到旧,新建的排在前面 |
| -tr | 根据文件创建时间进行排序,由旧到新 |