文件类型:
Linux中的文件类型和Windows有明显的区别,最大的就在于,Linux把目录和设备都当做文件来进行处理,这样就简化了对各种不同类型设备的处理,提高了效率。Linux的文件,分为四类:普通文件、目录文件、链接文件和设备文件。
-
普通文件:
普通文件可以是源代码、可执行文件、文本图片音频或者视频等,其实就是Windows的那种最基本的文件(你看目录、链接、设备文件都知道,还剩下什么文件)。 -
目录文件:
在Linux里,目录文件也是文件。他们包含文件名和子目录名以及指向那些文件和子目录的指针。当文件和目录相对应起来,就是用指针将其链接起来之后,就构成了目录文件。
- 链接文件:
linux中,几个文件名可以和一个 i 结点相关联(这几个就是一个是普通文件,其余是硬链接文件了)。i 结点含有一个字段,其中含有与文件的关联数目。要增加一个链接,只需要简单地建立一个目录项(应该是Linux内核或者哪个地方,有一块文件目录表,记录着所有的文件–结点信息),该目录项的 i 结点号指向该 i 结点,并增加该 i 结点的链接个数即可。但如果是删除一个链接,或者删除原文件,在内核上并不是删除链接或者文件,而是递减 i 结点的链接计数值。当计数值为0时,才释放结点,所以文件或者链接才彻底消失。这种链接,称为 硬链接(hard link)
而还有一种是软链接(符号链接symbolic link)。符号链接是没有指向那个 i 结点的,是需要另外的磁盘空间。当Linux从路径名到 i 结点的转换中,当内核遇到一个符号链接时,就用该链接对应的文件替换,并继续路径名的翻译工作(文件架构,是通过 结点的形式实现的。所以说,越研究Linux的底层设计,越觉得真是巧妙)。 在用户使用的角度来看,它就相当于Windows下的快捷方式了。
由于符号链接没有指向 i 结点,所以它可以指向任意类型的文件,甚至是一个不存在的文件(删除原文件后,符号链接就是指向不存在的文件)。它可以实现,对不同目录。文件系统、甚至是不同机器上的文件的直接访问,这是Windows的快捷方式所达不到的。
ln命令默认建立硬链接(hard link),使用-s参数,可以建立软链接。 如:
ln temp.c hardlink
ln -s temp.c softlink
在使用上,就是:
——软链接没有与硬链接发生联系,中间需要通过文件相连
——修改硬链接或者软链接的内容,都会同时修改所有的被链接的文件
——删除原文件后,软链接失效,但是硬链接可以继续使用,直到 i 结点计数值为0
——为了避免造成目录树的循环,对于目录文件,不能使用硬链接
- 设备文件:
Linux为了屏蔽用户对设备访问的复杂性,采用了设备文件。设备文件,包括硬盘、光驱、打印机等。存在两类设备特殊文件:字符和块设备特殊文件。前者(如键盘)允许通过字符模式进行 io 操作。后者(如磁盘)需要通过高速缓冲功能以块模式写数据方式操作。所有的设备文件,都放在 /dev 目录下。
附有:
普通文件:-
目录文件:d
链接文件:l
字符设备文件:c
块设备:b
命名管道:p(如先入先出文件)
堆栈文件:f(如后进先出文件)
文件属性:
Linux中,一个文件能否执行,与后缀无关,而是文件属性有关。
文件属性如下:
rwx r-x r-x (文件拥有者权限(u) 文件所有组权限(g) 系统其它用户权限(o))
其中,
r: 可读
w:可写
x :可执行
-:没有权限
可用八进制数来表示文件属性,上面那个表示为:
rwx :7 r-x :5 r-x:5 ,即0755(八进制前面一定要加0作为区分)