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. 8种Nosql数据库系统对比(转)

    导读:Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只 ...

  2. struts2框架学习之第二天

    day02 下面是在每个Action之前都会执行的拦截器,这段代码来自与struts-default.xml文件. <interceptor-stack name="defaultSt ...

  3. SPOJ - DQUERY D-query 主席树

    题意; 给一个数列$\{ a_i\}$ 一些询问$(l_i,r_i)$ 问你$[l,r]$有多少个不同元素 题解: 其实本质思路和离线化处理询问的线段树/树状数组写法差不多,对区间$[x,r]$来说, ...

  4. 带jdk15类似的jar配置

    针对部分jar文件名带有jdk15结尾的依赖配置时,需要添加<classifier>标签进行区分 比如针对:json-lib-2.4-jdk15.jar的jar依赖配置 <depen ...

  5. 配置国内 Docker Registry Mirror

    由于国内特殊的网络环境,往往我们从Docker Hub中拉取镜像并不能成功,而且速度特别慢. 那么我们可以给Docker配置一个国内的registry mirror,当我们需要的镜像在mirror中则 ...

  6. python创建udp服务端和客户端

    1.udp服务端server from socket import * from time import ctime HOST = '' PORT = 8888 BUFSIZ = 1024 ADDR ...

  7. Python-数据类型 主键auto_increment

    MySQL数据操作: DML========================================================在MySQL管理软件中,可以通过SQL语句中的DML语言来实 ...

  8. C#方法的重写

    问题一:什么是重写? “重写”父类方法就是修改它的实现方式或者说在子类中对它进行重新编写. 问题二:为什么要重写父类的方法      通常,子类继承父类的方法,在调用对象继承方法的时候,调用和执行的是 ...

  9. css 样式 记录

    /* Track */::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); -webkit-bo ...

  10. Url解码和编码 escape()、encodeURI()、encodeURIComponent()区别详解

    Server.UrlDecode;解码 Server.UrlEncode;编码 url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value ...