一、文件种类
- 大概分为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等。还有几个比较重要的目录。
|
/lib | 放置的是启动时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库。
|
/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 | 系统默认的用户家目录。每新增一个一般用户账号时,默认的用户家目录都会规范到这里来
|
/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/ | 主要放置只读的数据文件,也包括共享文件。几乎是文本文件。常见的有
|
- 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/ | 这个目录通常放置一些队列数据,所谓队列就是排队等待其他程序使用的数据。这些数据使用后通常会被删除 |
十、目录树汇总图
- 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。