对初学者来说,管理 Linux 系统中的文件和目录,是学习 Linux 至关重要的一步。
为了方便管理文件和目录,Linux 系统将它们组织成一个以根目录 / 开始的倒置的树状结构。Linux 中的目录,和 Windows 系统中的文件夹类似,不同之处在于,Linux 系统中的目录也被当做文件看待。
管理文件和目录,包括对文件和目录的浏览、创建、修改及删除等操作,需借助大量的 Linux 命令,比如 ls、cd、mkdir 等,本章将详细介绍这些 Linux 命令的用法。
Linux文件系统的层次结构
在Linux操作系统中,所有的文件和目录都被组织成以一个根节点“/”开始的倒置的树状结构。
文件系统的最顶层是由根目录开始的,系统使用“/”来表示根目录,在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含(子)目录或文件。如此反复就可以构成一个庞大的文件系统。
完整的目录或文件路径是由一连贯的目录名所组成的,其中每一个目录由“/”来分隔。如 cat 的完整路径是 /home/cat。
在文件系统中,有两个特殊的目录,一个是用户所在的工作目录,即当前目录,可用一个点“.”表示;另一个是当前目录的上一层目录,也叫父目录,用两个点“..”表示。
注意:如果一个目录或文件名是以一个点开始,就表示这个目录或文件是一个隐藏目录或文件。即以默认方式査找(后续会讲查找命令)时,不显示该目录或文件。
Linux绝对路径和相对路径
指明一个文件存放的位置,有两种方法,分别是使用绝对路径和相对路径。
绝对路径一定是由根目录/开始写起。
相对路径不是从根目录/开始写起,而是从当前所在的工作目录开始写起。使用相对路径表明某文件的存储位置时,经常会用到当前目录(用.表示)和父目录(用..表示)
总之,绝对路径是相对于根路径/的,只要文件不移动位置,那么它的绝对路径是恒定不变的;而相对路径是相对于当前所在目录而言的,随着程序的执行,当前所在目录可能会改变,因此文件的相对路径不是固定不变的。
Linux文件(目录)命名规则
同其他系统相比,linux操作系统对文件或目录命名的要求相对比较宽松。
linux系统中,文件和目录的命名规则如下:
- 除了字符“/”之外,所有的字符都可以使用,但是要注意,在目录名或文件名中,使用某些特殊字符并不是明智之举。例如,在命名时应避免使用 <、>、?、* 和非打印字符等。如果一个文件名中包含了特殊字符,例如空格,那么在访问这个文件时就需要使用引号将文件名括起来。
- 目录名或文件名的长度不能超过 255 个字符。
- 目录名或文件名是区分大小写的。如 DOG、dog、Dog 和 DOg ,是互不相同的目录名或文件名,但使用字符大小写来区分不同的文件或目录,也是不明智的。
- 与 Windows 操作系统不同,文件的扩展名对 Linux 操作系统没有特殊的含义,换句话说,Linux 系统并不以文件的扩展名开分区文件类型。例如,dog.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行文件。
需要注意的是,在linux系统中,硬件设备也是文件,也有各自有文件名称。linux系统内核中的udev设备管理器会自动对硬件设备的名称进行规范,目的是让用户通过设备文件的名称,就可以大致猜测处设备的属性以及相关信息。
udev设备管理器会一直以进程的形式运行,并侦听系统内核发出的信号来管理位于/dev目录下的设备文件。
下表为Linux系统中常见硬件设备的文件名。
硬件设备 | 文件名称 |
IDE设备 | /dev/hd[a-d],现在的 IDE设备已经很少见了,因此一般的硬盘设备会以 /dev/sd 开头。 |
SCSI/SATA/U盘 | /dev/sd[a-p],一台主机可以有多块硬盘,因此系统采用 a~p 代表 16 块不同的硬盘。 |
软驱 | /dev/fd[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0 或 /dev/ht0 |