Linux 的文件通常分为 7 大类

文件类型                                  缩写      英文名称                                                 
普通文件 - Regular file
目录文件 D Directory file
块设备文件 B Block special file
字符设备文件 C Character special file
命名管道文件 F FIFO 或 named pipe
套接字文件 S Socket
符号链接文件 l Symbolic link

普通文件

普通文件是 Linux 系统中最常见的一类文件,其特点是不包含文件系统的结构信息,可包括图形文件、数据文件、文档文件、声音文件等;按照内部结构又可分为文本文件和二进制文件两种。

  • 文本文件

  文本文件是字符(ASCII码)组成的文件,以行为基本结构的信息存储文件,它的内容是用户可以直接读到的数据,例如数字、字母等。通常来说,Linux 的系统配置文件基本上都属于这种文件类型,可以使用 cat 命令直接查看。

  • 二进制文件

  二进制文件是按信息在内存中的格式表示的文件,通常不能直接查看,而必须使用相应的软件来查看。通常来说,Linux 中的可执行文件(脚本、文本方式的批处理文件不算)基本都属于这种文件类型,可以运行。

目录文件

Linux 中的目录也是以文件存在的,称为目录文件,其是文件系统中一个目录所包含的目录项组成的文件,用户可以读取但是不能修改该目录文件的内容,只允许系统进行修改。

设备文件

Linux 把设备(例如硬盘、串口等)也看做文件,具有相同的操作方法,这种文件被成文设备文件,是用于操作系统与 I/O 设备提供连接的一种文件,分为字符设备文件和块设备文件,这些文件通常存放在 dev 目录中。

字符设备文件

这是一个顺序的数据流设备文件,对这种文件的读写是按字符进行的,而且这些字符是连续地形成一个数据流。字符设备不具备缓冲区,所以对这种设备的读写是实时的,如串口终端、磁带机等。

块设备文件

这是一种具有一定结构的随即存取设备文件,对这种设备的读写是按块进行的,它使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备,或从设备中一次性读出放入到缓冲区,如磁盘和文件系统等。

命名管道文件

命名管道文件又被称为先进先出文件,其主要用于在 Linux 的进程间传递数据,是 Linux 进程间的一种通信机制。管道是进程间传递数据的“媒介”,一个进程将数据写入管道的一端,另一个进程从管道另一端读取数据。通常情况下,管道是建立在高速缓存中的。采用先进先出的规定处理其中的数据。管道文件又可以分为有名管道和无名管道两种。

套接字文件

套接字(Socket)文件主要用于不同计算机进程间的通信,其是操作系统内核中的一个数据结构,它是网络中的节点进行相互通信的门户。套接字有三种类型:流式套接字、数据报套接字和原始套接字。流式套接字也就是 TCP 套接字(或称面向连接的套接字),数据报套接字也就是 UDP 套接字(或称无连接的套接字),原始套接字用 “SOCK_RAW” 表示。

  • 流式套接字定义了一种可靠的面向连接服务,实现了无差错、无重复的顺序数据传输
  • 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的、并且不保证可靠、无差错
  • 原始套接字允许对低层协议,如 IP 或 ICMP 进行访问,主要用于对新的网络协议进行测试等

符号链接文件

又称链接文件,是一种特殊的文件,实际上是指向一个真实存在的文件链接。链接文件提供了共享文件的一种方法,在链接文件中不是通过文件名实现文件共享,而是通过链接文件所包含的指向文件的指针来实现对文件的访问。普通用户可以建立链接文件,并通过其指针访问它所指向的那个文件。使用链接文件可以访问普通文件,还可以访问目录文件和不具有普通文件形态的其它文件。也就是说,链接文件可以在不同的文件系统之间建立一种链接关系。根据链接对象的不同,可以分为硬链接文件和符号链接文件。

Linux 的文件是一个简单的字节数据序列,所以在 Linux 下对于文本文件、二进制文件的结构和访问方法都是相同的。Linux 的文件是由一系列块(block)组成,每个块可能含有 512、1024、2048 或 4096 个字节,具体由系统实现决定,在同一个文件系统中块大小是相同的。当使用较大块的时候,由于每次磁盘操作可以传输更多的数据,操作所花的事件较少,所以可以提高磁盘和内存间数据的传输率,但是相对的,由于块太大,存储的有效容量也会下降,也就是说会浪费一些存储空间。

Linux 使用文件描述符(File Descriptor)来标识一个进程正在访问的特定文件,当打开一个文件或创建一个文件时,Linux 将返回一个文件描述符,以供其它操作引用,通常来说文件描述符是一个小的非负整数。

Linux 中,每个进程都可以拥有最多 1024 个文件描述符,并且有自己的文件描述符表,其中前三项对于一般的进程是固定的,且是由系统自动打开的:

  • 文件描述符 0:标准输入文件,通常对应键盘灯输入设备
  • 文件描述符 1:标准输出文件,通常对应显示设备
  • 文件描述符 2:标准错误输出文件,通常也是对应显示设备

对于以上三个文件描述符,用户程序不用执行文件打开操作就可直接使用,其在头文件中的定义部分如下:

 #define    STDIN_FILENO      0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2

Linux 的文件类型的更多相关文章

  1. Linux基本文件类型

    Linux基本文件类型 基本文件类型 - : 普通文件 d : 文件目录 p : 管道文件 l : 软连接文件 c : 字符设备文件 s : socket文件

  2. Linux的文件类型

    在Linux中,文件的颜色都是有含义的.其中, Linux中文件名颜色不同,代表文件类型不一样. 浅蓝色:表示链接文件: 灰色:表示其他文件: 绿色:表示可执行文件: 红色:表示压缩文件: 蓝色:表示 ...

  3. linux的文件类型和权限

    Linux下使用ll或ls -l查看文件的信息 (ll和ls-l的区别:ll会显示出当前目录下的隐藏文件,而ls -l不会)   文件信息分为:文件类型.权限.链接数.所属用户.所属用户组.文件大小. ...

  4. Linux 程序设计学习笔记----Linux下文件类型和属性管理

    转载请注明出处:http://blog.csdn.net/suool/article/details/38318225 部分内容整理自网络,在此感谢各位大神. Linux文件类型和权限 数据表示 文件 ...

  5. Linux基础文件类型

    一.文件时间 ls -l 文件名 仅看的是文件的修改时间 [root@linux ~]# ls -l /etc/passwd -rw-r--r-- root root 5月 : /etc/passwd ...

  6. 6、Linux基础--文件类型、属性信息、创建用户与用户组

    笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...

  7. linux 修改文件类型

    :Unix及类Unix系统里,每行结尾只有换行“\n”,Windows系统里面,每行结尾是换行+回车“\n\r”. 利用Linux下的vim编辑器,可以方便的在dos文件.unix文件之间进行切换,且 ...

  8. Linux:文件类型和权限

    一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件.

  9. linux中的文件类型以及查看文件类型的方法

    Linux文件类型和文件的文件名所代表的意义是两个不同的概念,在linux中文件类型与文件扩展名没有关系.它不像Windows那样是依靠文件后缀名来区分文件类型的,在linux中文件名只是为了方便操作 ...

随机推荐

  1. Mudo C++网络库第六章学习笔记

    muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并 ...

  2. 2-HTML Text Formatting Elements

    下表列举了文字格式常见的关键字 Tag Description <b> Defines bold text <em> Defines emphasized text  < ...

  3. Jquyer table 中的数据分页

    直接上代码,复制出来就可以使用 <!DOCTYPE html> <html> <head lang="en"> <meta charset ...

  4. JAVA框架之Hibernate框架的学习步骤

    首先介绍一下Java三大框架的关系 以CRM项目即客户关系管理项目示例 hibernate框架的学习路线: 1.学习框架入门,自己搭建框架,完成增删改查的操作 2.学习一级缓存,事物管理和基本查询 3 ...

  5. IntelliJ IDEA使用教程 (总目录篇)

    注:本文来源于<    IntelliJ IDEA使用教程 (总目录篇)  > IntelliJ IDEA使用教程 (总目录篇) 硬件要求 IntelliJ IDEA 的硬件要求 安装包云 ...

  6. SQL*Plus工具

    或者

  7. Confluence 6 已经存在的安装配置数据库字符集编码

    针对已经存在的 Confluence 安装,如果你安装的 Confluence 版本是 6.4 或者早期的版本,我们在安装的时候没有检查你数据库的字符设置. 如果你的数据库当前没有被配置使用 UTF- ...

  8. Confluence 6 workbox 通知包含了什么

    当一个用户在 Confluence 中进行下面的操作的时候,workbox 将会显示为通知: 分享(Shares)你的页面或者博客页面. 提及(Mentions)你的页面,博客页面,回复或者任务. 你 ...

  9. 开源中国社区 https://git.oschina.net/ 添加 SSH 公钥 添加

    首先可以参考官方的帮助文档 http://git.mydoc.io/?t=154712 然后进去码云首页 http://git.oschina.net 然后找到右边的头像点击一下  然后点击修改资料 ...

  10. sql中某条件不为空,可能有的小祖宗会喷了,这还用总结?emmm,我渣,我觉得有一点意思对于第二种(土味)

    需求说明:存在父子关系的单表,父级别的parent_id为空,那么要得到所有的子级别的数据信息,查询的条件就是:父id不为空. 个人做法:where parent_id is not null or ...