LychieFan 2020-05-31
目录是一组相关文件的集合。一个目录下面除了可以存放文件之外还可以存放其他目录,即包含子目录。
在确定文件、目录位置时,DOS 和 Unix/Linux 都采用“路径名+文件名”的方式。路径反映的是目录与目录之间的关系。
Unix/Linux 路径由到达定位文件的目录组成。在 Unix/Linux 系统中组成路径的目录分割符为斜杠“/”,而 DOS 则用反斜杠“\”来分割各个目录。
路径分为绝对路径和相对路径:
在 Windows 系统中,打开“计算机”,我们看到的是一个个的驱动器盘符:
每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形。如图所示:
在 Linux 系统中,没有驱动器盘符的概念。我们看到的是文件夹(目录):
在早期的 Unix 系统中,各个厂家各自定义了自己的 Unix 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于 1994 年对根文件目录做了统一的规范,推出 FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,结束了命名混乱的局面。
和 Windows 操作系统类似,所有 Unix/Linux 的数据都是由文件系统按照树型目录结构管理的。而且 Unix/Linux 操作系统同样要区分文件的类型,判断文件的存取属性和可执行属性。
Unix/Linux 也采用了树状结构的文件系统,它由目录和目录下的文件一起构成。但 Unix/Linux 文件系统不使用驱动器这个概念,而是使用单一的根目录结构,所有的分区都挂载到单一的“/”目录上。其结构示意图如图所示:
无论何种版本的 Linux 发行版,桌面、应用是 Linux 的外衣,文件组织、目录结构才是 Linux 的内心。
/:根目录。在 Linux 下有且只有一个根目录。所有的东西都是从这里开始。根目录下通常只存放目录。
/bin、/usr/bin:存放可执行二进制文件的目录。如常用的命令 ls、tar、mv、cat 等。
/boot:放置 Linux 系统启动时用到的一些文件,如 Linux 的内核文件 /boot/vmlinuz、系统引导管理器 /boot/grub。
/dev:存放 Linux 系统下的设备文件。访问该目录下某个文件,相当于访问某个设备。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件。重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的用户家目录。新增用户账号时,用户的家目录都存放在此目录下。~ 表示当前用户的家目录,~edu 表示用户 edu 的家目录。
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
/mnt、/media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所存放的目录。
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态等。由于数据都存放于内存中,所以不占用磁盘空间。比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系统管理员 root 的家目录。
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local 存放软件升级包。/usr/share/doc 是系统说明文件存放目录。/usr/share/man 是程序说明文件存放目录。
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message 是所有的登录文件存放目录,/var/spool/mail 是邮件存放的目录,/var/run 则是当程序或服务启动后,将 PID 存放在此目录下。
Unix/Linux 对数据文件(*.mp3、*.bmp),程序文件(*.c、*.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件(socket)等的管理都抽象为文件,使用统一的方式方法管理。
在 Unix/Linux 操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在 Unix/Linux 系统中文件可以没有扩展名。
Unix/Linux 系统中常用的文件类型有 5 种:普通文件、目录文件、设备文件、管道文件和链接文件。
普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在 Unix/Linux 中可以通过 file 命令来查看文件的类型。如果 file 文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。
Unix/Linux 系统把目录看成是一种特殊的文件。Linux 利用目录文件构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。
每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。
Unix/Linux 系统把每个设备都映射成一个文件,这就是设备文件。设备文件是用于向 I/O 设备提供连接的文件。
设备文件分为字符设备和块设备文件。字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。
每一种 I/O 设备对应一个设备文件,存放在 /dev 目录中,如行式打印机对应 /dev/lp,第一个软盘驱动器对应 /dev/fd0。
管道文件也是 Unix/Linux 中较特殊的文件类型,管道文件多用于进程间的通信。
似于 Windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。
文件权限就是文件的访问控制权限,即哪些用户和群组可以访问文件以及可以执行什么样的操作。
Unix/Linux 系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux 系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux 中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
通过设定权限可以从以下三种访问方式限制访问权限:
这有点类似于 QQ 空间的访问权限:
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux 系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
第 1 个字母代表文件的类型:
后 9 个字母分别代表三组权限:文件所有者、用户所属群组、其他用户拥有的权限。
每一个用户都有它自身的读、写和执行权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有 9 种类型的权限组。