Linux操作系统相对于桌面操作系统Windows,在文件系统设计上,有一个很重要的可以说是Linux哲学的思想:一切皆文件。Linux\Unix认为,系统和所有的硬件设备的交互都应该如同文件操作一样简单易行,文件也不应该和应用程序绑定,比如.doc必须有Word才能打开,你可以在Linux上用cat打开任何文件(有意义的话)。
因为Linux是开源的,利用Linux来开发软件的团队或个人太多了,如果每个人都按照自己的想法来配置文件放置的目录,那很可能造成管理上的困难。比如:你去一家企业,所接触到的Linux目录配置竟然和你之前学习的完全不一样,那你一定很懵逼,所以对于Linux就有一个同意的文件配置标准叫做:FHS(FilesystemHierarchy Standard)出炉。可以参考网站(http://www.pathname.com/fhs/)。FHS的重点在于规范每个特定的目录下应该要放置什么样的数据。这样的话就能解决管理上的很多困难了。
那么既然一切皆文件,Linux下都有哪些文件呢?下面我们先来看看Linux系统文件的种类和扩展名:
文件种类:
普通文件:一般我们进行访问的文件,可以用符号—表示,我们可以用ll查看文件属性时,第一个显示的是—那么就说明此文件是一个普通文件。普通文件按照内容的不同又可以分为:
纯文本文件(ASCII):可以直接读取
二进制文件(binary):系统可以认识执行的文件
数据格式文件(Data):特定格式,比如/var/log/wtmp记录登录信息的,就是一个数据格式文件,可以用last打开。
目录(directory):第一个属性为d相当于Windows的文件夹。
连接文件(link):第一个属性为l,相当于Windows下的快捷方式
设备与设备文件(device):与系统外设及存储相关的一些文件,通常都集中在/dev这个目录下。它通常可以分为两种:
块(block)设备文件:第一个属性b存储设备供系统随机访问的接口设备,如硬盘,软盘等。
字符(character)设备文件:第一个属性c,就是串行端口的接口设备,如键盘鼠标等,这些设备的特征是“一次性读取”的,不能够截断输出。
套接字(sockets):数据接口文件,第一个属性为s,通常可以在/var/run这个目录下可以看到这种类型的文件,通常被用在网络上的数据连接。
管道(FIFO,pipe):一种特殊的文件类型,目的是解决多个程序同时访问一个文件造成的错误问题。第一个属性为p。
以上就是Linux系统的一些文件种类,以及在ll命令下查看文件属性时的第一个属性的代表字母。接下来我们看一看Linux下的扩展名。
由于Linux下一切接文件,不像Windows系统,我们知道有.exe.bat .com扩展名的文件在Windows下是可以被执行的,在Linux下可不可以被执行和文件的扩展并并没有什么关系,是和文件的权限相关的X代表可执行,只要具有这个权限,那么这个文件就是可执行文件,能不能执行成功则和文件的内容有关了。但是为了解释文件的内容,我们在Linux下还是通常会以适当的扩展名进行命名文件的。
*.sh:脚本或批处理文件
*Z *.tar *.gz *.bz2 *.zip *.tar.gz *.tar.bz:等经过打包压缩的文件
*.html *.php:网页相关文件
注:Linux下文件的扩展名只是为了让你了解改文件的可能用途而已。网络上传过来的文件其属性和权限很有可能是会被改变的。
Linux文件长度限制
单一文件或目录的最大容许文件名为255个字符;包含完整的路径名称及目录的完整文件名为4096个字符。
上面说了一些Linux文件的文件类型,下面就谈一谈FHS标准的目录设置。FHS根据文件系统使用的频繁与否是否允许用户随意改动,将目录定义成四种交互的形态,见下表1:
表1
| 可分享的(shareable) | 不可分享的(unshareable) |
不变的(static) | /usr(软件放置处) | /etc(配置文件) |
/opt(第三方软件) | /boot(开机与内核文件) | |
可变动的(variable) | /var/mail(用户邮件邮箱) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock(程序相关) |
Linux文件系统最重要的一个目录那就是根(/)目录,Linux下所有的目录都是有根目录衍生出来的,同事它也与开机还原系统修复有关。所以FHS建议:根目录所在分区应该越越好(当然要适当),应用程序最好不要与根目录放在同一个分区内。一般根目录应该要有下面这些子目录的存在才好,如下表2:
表2:
目录 | 应放置文件内容 |
/bin | 单用户模式下还能被操作的命令。root和一般账户使用,cat chmod,mv… |
/boot | 主要放置开机会使用到的文件,包括内核文件,开机菜单,开机配置文件等。Grub |
/dev | 任何设备和接口文件都在这个目录。 |
/etc | 系统主要的配置文件。/etc/init.d/默认服务的启动脚本 |
/home | 系统默认的用户主文件夹~代表目前用户的主文件夹 |
/lib | 开机时会用到的函数库,以及/bin /sbin下面的命令调用的函数库 |
/media | 可删除的设备,软盘光盘DVD暂时挂载在此 |
/mnt | 挂载目录 |
/opt | 第三方软件放置目录:KDE /usr/local |
/root | 系统管理员的主文件夹 |
/sbin | 开机过程中所需要的命令 |
/srv | Service的缩写:www服务所需数据可以放在/srv/www/里面 |
/tmp | 一般用户或者正在执行的程序暂时放置文件的地方。 |
开机过程中仅有根目录会被挂载,其他分区则是在开机完成之后才会持续进行挂载,正因为如此,根目录下与开机过程有关的目录不能够与根目录放置在不同的分区。有哪些目录呢?见表2红色标志。