和 windows 一样,linux 系统也有目录的概念,系统中的文件通过目录进行存储和管理。接下来,我们将详细介绍 linux 系统中的目录结构以及常用的相关概念。
Linux 系统的目录结构
在 Windows 系统中,硬盘被划分为不同的磁盘分区,每个分区分配一个不同的盘符,比如 C:、D: 等,每个分区都有自己的根目录,如 C:、D: 分别是 C 盘和 D 盘的根目录。而 Linux 系统则将整个硬盘统一管理,系统只有一个根目录 “/”,所有文件和目录都在这个根目录下,它标志着 Linux 文件系统的起点。需要注意的是,Linux 中目录间的间隔使用的是斜线(forward slash)”/”,而 Windows 中用的是反斜线(back slash)””。
为了保持一致性,绝大多数 Linux 发行版(详见《这么多 Linux 版本,你该如何选择?》)的系统目录结构是统一的。以 centos 7 为例,下面介绍常用的系统目录及其作用。
/root:超级用户 root 的家目录 /bin:是 Binary 的缩写,用于存放系统中常用的命令,任何用户都有权限执行 /boot:存放系统启动时所需的文件,Linux 的内核就存放在这个目录中 /dev:是 Device 的缩写,存放硬盘、光驱、鼠标等设备文件,Linux 中访问设备和访问文件的方式相同 /etc:存放系统和程序所需的配置文件,类似于 Windows 的注册表 /home:普通用户的家目录。普通用户的家目录通常与用户账号名相同,例如 user1 的家目录是 /home/user1 /var:存放一些经常变化的文件,比如 /var/log 存放日志,/var/spool/mail 存放邮件 /lib /lib64:存放连接共享库,类似于 Windows 中的 dll 文件。这些库文件不能单独执行,需要被其他程序调用,几乎所有的应用程序都需要使用共享库 /usr:软件默认的安装位置,存放用户应用程序和文件,类似于 Windows 下的 Program Files /media:用于挂载 U 盘、光驱等系统自动识别的设备 /lost+found:存放系统崩溃或意外关机时产生的碎片文件,正常情况下是空的 /mnt:用于临时挂载别的文件系统,比如增加一块硬盘,需要手动挂载 /opt:用于安装额外软件所用的目录,默认是空的 /proc:虚拟文件系统,是系统内存的映射。访问这个目录可以获取许多有用的系统信息 /sbin:s 代表 super,存放只有系统管理员才有权限执行的命令 /srv:存放一些服务启动后所需提取的数据 /sys:该目录下安装了文件系统 sysfs,该文件系统是内核设备树的一个直观反映 /tmp:存放临时文件,所有用户都可执行写操作 /run:存放进程产生的临时文件,系统重启后,这个目录会被清空
绝对路径与相对路径
1)绝对路径:使用完整的路径表示目录,从根目录“/”开始。例如,/user/bin 是绝对路径,可以准确地表示一个目录的位置,但路径较长时输入会比较麻烦。
以下是一个例子,当以用户 user1 登录后,使用 pwd(print working Directory)命令来打印当前的工作目录:
$ pwd
/home/user1
/home/user1 就是当前工作目录的绝对路径,也是 user1 的家目录。如上所述,普通用户的家目录都在 /home 目录下。
2)相对路径:相对于当前工作目录来表示路径。例如,当前工作目录为 /home/user1,/home/user1/Desktop 用相对路径表示即为 ./Desktop 或直接 Desktop,其中“.”表示当前工作目录,“..”表示上一级目录。
$ cd Desktop
$ pwd
/home/user1/Desktop
常用的目录操作
1)cd:change directory,切换工作目录,语法格式为:
$ cd [目录名]
2)pwd:print working directory,打印当前工作目录,语法格式为:
$ pwd
如上面的例子演示,切换目录后可以再用 pwd 命令确认当前目录是否正确。
3)ls:list,语法格式为:
$ ls [选项] [目录或文件名]
如果 ls 命令后面跟的是目录,会显示目录下包含的文件信息;如果是文件名,则会显示该文件的信息;如果没有跟任何参数,则显示当前工作目录下包含的文件信息。
常用选项:
-a 显示所有文件,包括隐藏文件 -l 以长格式显示目录或文件的信息 -d 只显示目录本身的信息,不显示目录下包含的文件 -h 以人性化的方式显示文件大小,比如以 K (KB)、M (MB)、G(GB)表示
4)mkdir:make directory,创建目录,语法格式为:
$ mkdir [选项] 目录名
常用选项:
-p 可以用于创建嵌套的多级目录
5)cp:copy,复制文件或目录,语法格式为:
$ cp [选项] 源文件或目录 目标文件或目录
常用选项:
-r 如果复制的是一个目录,必须使用这个选项,会把目录下所有的内容都复制到目标目录中
6)mv:move,移动文件或目录,语法格式为:
$ mv [选项] 源文件或目录 目标文件或目录
如果移动的是一个目录,不需要加 -r 选项,可以直接将目录进行移动。
7)rm:remove,删除文件或目录,语法格式为:
$ rm [选项] 文件或目录
常用选项:
-r 如果删除的是一个目录,必须使用这个选项 -f 强制删除,无需用户确认
一般删除目录时,两个选项会同时使用 -rf,但建议在删除前先用 mv 命令将待删除的目录移动到一个指定的回收目录,等过一段时间确认不再需要这些文件和目录,再使用 rm 命令将其删除。
总结
本文介绍了 Linux 系统目录的结构及其用途,目录相关的概念,以及最常用的相关命令。结合之前的文章《虚拟机安装 Linux 最完整攻略》,大家可以在自己的虚拟机中进行练习。请注意,不要删除系统目录,否则系统可能会崩溃。最好在自己的家目录或临时目录中进行操作。