一、文件种类

  • 大概分为​6大类

  • 常规文件
  • 目录
  • 链接文件
  • 数据接口文件
  • 数据输送文件

常规文件

  • 用ls列出时,第一个字符为​-


纯文本文件(ASCII)


Linux系统中最多的一中文件类型,内容是可以读取的数据,例如数字、字母等

二进制文件(binary)

计算机导论中曾提到,计算机只识别二进制文件(binary file)。Linux中可执行文件(scripts、脚本文件等)就是这种格式

数据文件(data)

程序在运行过程中读取某些特定格式的文件,就是数据文件。例如我们Linux​用户登录​时,登录记录都会记录到/var/wtmp这个文件内,该文件就是一个数据文件,此文件能够通过last命令读出来,但是用cat命令读取时会乱码,因为它是一种特殊格式的

目录

  • 用ls列出时,第一个字符为​d

链接文件(link)


  • 用ls列出时,第一个字符为​|
  • 类似于Windows下面的快捷方式

设备与设备文件

  • 与系统周边及存储等相关的一些文件,通常集中在/dev这个目录下,通常分为两类

区块(block)设备文件

用ls列出时,第一个字符为​b

一些存储数据,随机存取的接口设备,例如硬盘与软盘

字符(character)设备文件

用ls列出时,第一个字符为​c

一些串行端口的接口设备,例如键盘、鼠标等

数据接口文件


  • 用ls列出时,第一个字符为​s
  • 通在用在网络上的数据交换。我们可以启动一个程序来监听客户端的要求,而客户端就可以通过这个socket来进行数据沟通

数据输送文件


  • 用ls列出时,第一个字符为​p
  • FIFO也是一种特殊的文件类型,它的主要目的是解决多个程序读写一个文件所造成的错误问题,FIFO是先进先出(first in first out)的缩写,即通道

二、文件扩展名


  • 引入:​Linux中基本上没有扩展名的概念,我们前面谈到过,一个文件是否能执行,取决于该文件的​x权限​,与后缀名无关
  • 常见扩展名:

*.sh

脚本或批处理文件(scripts),因为批处理文件使用shell写成,所以扩展名为.sh

*Z、*.tar、*.tar.gz、*.zip、*.tgz

经过打包的压缩文件

*.html、*.php

网页相关的文件

三、文件名、文件名长度


  • 文件名:​尽量避免使用特殊字符命名,例如:*  ? > < & ! ' '' () []
  • 文件名长度:

  • 以一个ASCII英文占用一个字节:最大约255个字符长度
  • 若是每个汉字占用2字节:最大约128汉字之间


四、相对路径、绝对路径


  • 绝对路径:​一定由根目录写起
  • 相对路径:​相当于当前路径的路径

五、目录相关操作


  • .    :表示当前目录
  • ..   :表示上一级目录
  • ../..   :表示上上级目录
  • ~   :表示当前使用者的家目录
  • ~dongshao:表示用户dongshao的家目录
  • -   :返回上一次操作的路径
  • 注意:​根目录下也有.与..这两个目录,其中..与.是同一目录

六、Linux目录配置的依据---FHS


  • 概念:​利用Linux开发产品的公司以及个人很多,每个人如果都是用不同的想法来配置目录,那么就会造成管理上的很多不便,于是就有了FHS标准的出炉
  • FHS的目的​:让用户可以了解到已安装的软件通常放置于那个目录下,让独立开发软件的开发商、操作系统制造者等都遵循FHS标准
  • FHS协议下目录的分类


可分享

不可分享

不变

例如:/usr(软件存放处)

例如:/etc(配置文件)

不变

例如:/opt(第三辅助软件)

例如:/boot(启动与内核、文件)

可变动

例如:/var/mail(用户邮箱)

例如:/var/run(程序相关)

可变动

例如:/var/spool/news(新闻组)

例如:/var/lock(程序相关)


  • 可分享:​可以分享给其他系统挂在使用的目录,所以包括执行文件以后用户的邮件等数据
  • 不可分享:​自己机器上面运行的设备文件或是与程序有关的socket文件等,不适合分享给其他主机
  • 不变:​有些数据不会经常变动,例如函数库、说明文件、系统管理员所管理的主机服务配置文件等
  • 可变动:​经常修改的数据,例如日志文件、一般用户可自行接收的新闻组等
  • FHS协议下针对目录树架构下定义出三层主要目录

  • /(root,根目录):​与启动系统有关
  • /usr:​与软件安装/执行有关
  • /var:​与系统运行过程有关


七、根目录:/


  • 引入:

  • 根目录是整个系统最重要的一个目录,所有的目录都从​根目录繁衍​出来,同时根目录还与​启动、还原、系统修复​等操作有关
  • 由于系统启动时需要特定的启动软件、内核文件、启动所需程序、函数库等文件数据,若系统出现错误时,根目录也必须包含能够​修复文件​系统的程序才行
  • FHS要求,根目录​不要​放在​非常大​的分区内,因为分区越大,放置的文件越多,​越容易产生错误

  • 目录结构:​FHS要求​必须​存在的目录如下

/bin

系统有很多存放执行文件的目录,但是/bin比较特殊。/bin目录下放置的是在单人维护模式下还能够被执行的命令。/bin目录下的命令可以被root和一般账号使用。例如:cat、chmod、mv、mkdir...

/boot

主要放置启动会使用到的文件,包括Linux内核文件以及启动选项与启动所需配置文件等。Linux内核常用的文件名为:vmlinuz。如果使用grub2这个启动引导程序,则还会存在/boot/grub2/这个目录

/dev

任何设备与接口设备都以文件的形式存在于这个目录中,操作某个文件就相当于读写这个设备,比较重要的有:/dev/null、/dev/zero、/dev/tty等

/etc


系统主要的配置文件几乎都放置在这个目录内。例如:人员的账号密码、各种服务的启动文件等。这个目录下文件的各种属性可以让一般用户查看,但是只有root才有权修改。FHS建议不要放置可执行文件在这个目录中。比较重要的文件有:/etc/modprobe.d、/etc/passwd、/etc/fstab、/etc/issue等。还有几个比较重要的目录。


  • /etc/opt:放置第三方辅助软件/opt的相关配置文件
  • /etc/X11/:存放与X Window有关的各种配置文件,尤其是xorg.conf这个 X Server的配置文件
  • /etc/sgml/:与SGML格式有关的配置文件
  • /etc/xml/:与XML格式有关的配置文件


/lib


放置的是启动时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库。

  • /lib/modules/:主要放置可抽换式的内核相关模块(驱动程序)


/media

放置的是可删除的设备。包括:软盘、光盘、DVD等设备都暂时挂载于此。常见的由/modia/floppy、/media/cdrom等

/mnt

如果你想暂时挂载某些设备,一般建议放置在这个目录下。早些时候,这个目录的用途与/media相同。只是有了/media之后,这个目录就暂时用来挂载

/opt

第三方辅助软件放置的目录。如果你想要自行安装额外的软件,可以装在这个地方

/run

早起的FHS规定系统启动后所产生的各项信息应该放置在/var/run目录下。FHS新规范到/run目录下。由于/run使用内存来模拟,因此性能上会很好

/sbin

Linux有很多常用的命令是用来设置系统环境的,这些命令只有root才能够用来设置系统,其他用户只能查询。此目录下面放置的是启动过程中所需的启动、修复、还原系统所需要的命令。常用的命令有:fdisk、fsck、ifconfig、mkfs

/srv

是一些网络服务启动之后,这个服务所需要使用的数据目录。常见的由WWW、FTP等。例如:WWW服务器所需的网页数据就防止在/srv/www/里面。不过,系统的服务数据如果尚未要提供给因特网任何人浏览的话,建议放置在/bar/lib下面

/tmp

让一般用户或正在执行的程序暂时放置文件的地方。这个目录任何人都能够存取,所以需要定期地清理一下。当然,重要数据不要放置在这里

/usr

后续介绍

/var

主要放置变动性数据,后续介绍

  • FHS​建议​可以存在的目录

/home


系统默认的用户家目录。每新增一个一般用户账号时,默认的用户家目录都会规范到这里来

  • ~:代表目前这个用户的家目录
  • ~dongshao:代表dongshao的家目录


/lib<qual>

用来存放于/lib不同格式的二进制函数库。例如:支持64位的/lib64函数库等

/root

系统管理员的家目录。之所以放在这里:因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以希望root的家目录与根目录放置在同一个分区中

  • 一些其他​比较重要​的目录

/lost+found

这个目录是使用ext2、ext3、ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下。如果使用的是xfs文件系统的话,就不会存在这个目录

/proc

这个目录本身是一个虚拟文件系统,它放置的数据都是在内存中的,本身不占用任何硬盘空间。例如:系统内核、进程信息、外接设备的状态以及网络状态等。重要的有:/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/net/*等

/sys

这个目录与/proc目录非常相似,也是一个虚拟的文件系统。主要记录内核与系统硬件信息相关的内容。包括目前以加载的内核模块与内核检测到的硬件设备信息等。也不占用硬盘空间

八、/usr目录


  • 引入:

  • FHS规定,/usr里面放置的数据属于​可分享​与​不可变动
  • 因为所有系统默认的软件都会放置在/usr下面,因此此目录类似于Windows下“C:\Windwos\”+“C:\Program Files\”两个目录的结合
  • 所以,系统刚安装完毕之后,此目录会占用最多的硬盘空间

  • 目录结构:​FHS规定​必须​要存在的目录如下

/usr/bin/

一般用户能够使用的命令都放置在这里。使用链接文件的方式将/bin链接在此,所以/usr/bin/与/bin是一模一样的。此目录下要求不要再有子目录

/usr/lib/

基本上,与/lib功能相同,所以/lib就是链接到此目录中的

/usr/local/

系统管理员在本机安装自己下载的软件,建议安装到此目录,便于管理。该目录也具有bin、etc、include、lib...等子目录

/usr/sbnin/

非系统正常运行所需要的系统命令,最常见的就是某些网络服务器软件的服务命令。不过,基本功能与/sbin也差不多。目前/sbin就是链接到此目录中的

/usr/share/


主要放置只读的数据文件,也包括共享文件。几乎是文本文件。常见的有


  • /usr/share/man:在线帮助文件
  • /usr/share/doc:软件的说明文档
  • /usr/share/zoneinfo:与时区有关的时区文件


  • FHS​建议​可以存在的目录

/usr/games/

与游戏相关的数据放置处

/usr/include/

C/C++等程序语言的头文件与包含文件放置处

/usr/libexec/

某些不被一般用户常用的执行文件或脚本等,会放置在这里。例如:大部分的X 窗口下面的操作命令

/usr/lib<qual>/

与/lib<qual>/功能相同,因此码目前/lib<qual>就是链接于此

/usr/src/

一般源代码建议放置在这里。置于内核源代码建议放置在/usr/src/Linux/目录下

九、/var目录


  • 引入:

  • /var就是在​系统运行后​才会渐渐占用内存的目录
  • /var目录主要针对​经常变动​的文件,包括缓存、日志文件以及某些软件运行所产生的文件。例如程序文件、MySQL数据库的文件等

  • 目录结构:​FHS规定​必须​存在的目录

/var/cache/

应用程序本身运行过程中会产生的一些缓存

/var/lib/

程序本身运行的过程中,需要使用到的数据文件放置的目录。此目录各自软件有各自的目录。例如:MySQL数据库放置到/var/lib/mysql,rpm数据库则放置到/var/lib/rpm

/var/lock/

某些设备文件或是文件资源一次只能被一个应用程序所使用,如果有两个程序使用此设备时,就会产生错误,因此就得要将该设备上锁。目前,此目录也已经挪到/run/lock中

/var/log/

非常的重要。这是日志文件放置的目录,重要的有:/var/log/messages、/var/log/wtmp(记录登录信息)等

/var/mail/

放置个人电子邮箱的目录,这个目录被放置到/var/spool/mail/目录中,这两个目录互为链接文件

/var/run/

某些程序或是服务启动后,会将它们的PID放置在这个目录下,PID后面会介绍

/var/spool/

这个目录通常放置一些队列数据,所谓队列就是排队等待其他程序使用的数据。这些数据使用后通常会被删除

十、目录树汇总图

Linux的文件种类、文件扩展名、路径、目录配置依据FHS、目录树介绍_Linux目录树


  • 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。

Linux的文件种类、文件扩展名、路径、目录配置依据FHS、目录树介绍_根目录_02