关闭

Linux 中“一切都是文件”概念和相应的文件类型

156人阅读 评论(0) 收藏 举报
分类:

在 Unix 和它衍生的比如 Linux 系统中,一切都可以看做文件。虽然它仅仅只是一个泛泛的概念,但这是事实。如果有不是文件的,那它一定是正运行的进程。

要理解这点,可以举个例子,您的根目录(/)的空间充斥着不同类型的 Linux 文件。当您创建一个文件或向系统传输一个文件时,它会在物理磁盘上占据的一些空间,而且是一个特定的格式(文件类型)。

虽然 Linux 系统中文件和目录没有什么不同,但目录还有一个重要的功能,那就是有结构性的分组存储其它文件,以方便查找访问。所有的硬件组件都表示为文件,系统使用这些文件来与硬件通信。

这些思想是对 Linux 中的各种事物的重要阐述,因此像文档、目录(Mac OS X 和 Windows 系统下称之为文件夹)、键盘、监视器、硬盘、可移动媒体设备、打印机、调制解调器、虚拟终端,还有进程间通信(IPC)和网络通信等输入/输出资源都是定义在文件系统空间下的字节流。

一切都可看作是文件,其最显著的好处是对于上面所列出的输入/输出资源,只需要相同的一套 Linux 工具、实用程序和 API。

虽然在 Linux 中一切都可看作是文件,但也有一些特殊的文件,比如套接字和命令管道

Linux 文件类型的不同之处?

Linux 系统中有三种基本的文件类型:

  • 普通/常规文件
  • 特殊文件
  • 目录文件

普通/常规文件

它们是包含文本、数据、程序指令等数据的文件,其在 Linux 系统中是最常见的一种。包括如下:

  • 可读文件
  • 二进制文件
  • 图像文件
  • 压缩文件等等

特殊文件

特殊文件包括以下几种:

块文件(block):设备文件,对访问系统硬件部件提供了缓存接口。它们提供了一种通过文件系统与设备驱动通信的方法。

有关于块文件一个重要的性能就是它们能在指定时间内传输大块的数据和信息。

列出某目录下的块文件:

输出例子

字符文件(Character): 也是设备文件,对访问系统硬件组件提供了非缓冲串行接口。它们与设备的通信工作方式是一次只传输一个字符的数据。

列出某目录下的字符文件:

输出例子

符号链接文件(Symbolic link) : 符号链接是指向系统上其他文件的引用。因此,符号链接文件是指向其它文件的文件,那些文件可以是目录或常规文件。

列出某目录下的符号链接文件:

输出例子

Linux 中使用 ln 工具就可以创建一个符号链接文件,如下所示:

在上面的例子中,首先我们在 /tmp 目录创建了一个名叫 file1.txt 的文件,然后创建符号链接文件,将 /home/tecmint/file1.txt 指向 /tmp/file1.txt 文件。

管道(Pipe)和命令管道(Named pipe) : 将一个进程的输出连接到另一个进程的输入,从而允许进程间通信(IPC)的文件。

命名管道实际上是一个文件,用来使两个进程彼此通信,就像一个 Linux 管道一样。

列出某目录下的管道文件:

输出例子:

在 Linux 中可以使用 mkfifo 工具来创建一个命名管道,如下所示:

在上的例子中,我们创建了一个名叫 pipe1 的命名管道,然后使用 echo 命令 加入一些数据,这之后在处理输入的数据时 shell 就变成非交互式的了(LCTT 译注:被管道占住了)。

然后,我们打开另外一个 shell 终端,运行另外的命令来打印出刚加入管道的数据。

套接字文件(socket) : 提供进程间通信方法的文件,它们能在运行在不同环境中的进程之间传输数据和信息。

这就是说,套接字可以为运行网络上不同机器中的进程提供数据和信息传输。

一个 socket 运行的例子就是网页浏览器连接到网站服务器的过程。

输出例子:

下面是使用 C 语言编写的调用 socket() 系统调用的例子。

上例中:

  • AF_INET 指的是地址域(IPv4)
  • SOCK_STREAM 指的是类型(默认使用 TCP 协议连接)
  • 0 指协议(IP 协议)

使用 socket_desc 来引用管道文件,它跟文件描述符是一样的,然后再使用系统函数 read() 和 write() 来分别从这个管道文件读写数据。

目录文件

这是一些特殊的文件,既可以包含普通文件又可包含其它的特殊文件,它们在 Linux 文件系统中是以根(/)目录为起点分层组织存在的。

列出某目录下的目录文件:

输出例子:

您可以使用 mkdir 命令来创建一个目录。

结论

现在应该对为什么 Linux 系统中一切都是文件以及 Linux 系统中可以存在哪些类型的文件有一个清楚的认识了。

您可以通过阅读更多有关各个文件类型的文章和对应的创建过程等来增加更多知识。我希望这篇教程对您有所帮助。有任何疑问或有补充的知识,请留下评论,一起来讨论。

0
0
查看评论

诠释 Linux 中“一切都是文件”概念和相应的文件类型

在Unix和它衍生的比如Linux系统中,一切都可以看做文件。这些思想是对Linux中的各种事物的重要阐述,因此像文档、目录(Mac OS X 和 Windows 系统下称之为文件夹)、键盘、监视器、硬盘、可移动媒体设备、打印机、调制解调器、虚拟终端,还有进程间通信(IPC)和网络通信等输入/输出资...
  • hijack00
  • hijack00
  • 2016-08-25 12:46
  • 318

Linux中只有以下7种文件类型

在Linux中只有一下7种文件类型     即使开发人员在Linux文件树中添加新内容也必须符合一下之一     1.普通文件(-表示,可用ls -l查看)     2.目录...
  • u012110719
  • u012110719
  • 2014-12-10 22:33
  • 6997

Linux的文件类型分类

Linux文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。linux文件的删除方式是用rm 命令。 Linux文件类型; Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.t...
  • qq_32744005
  • qq_32744005
  • 2016-08-20 20:59
  • 1609

linux系统中文件的几种类型

Linux系统是以文件的形式来进行管理的。Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等,如果想了解这方面知识的弟兄,就进来了解了解。 Linux系统不同于window系统,两者文件类型也有很大的差异。Linux文件类型...
  • fivedoumi
  • fivedoumi
  • 2013-12-26 11:11
  • 6498

linux的七种文件类型

LINUX中的七种文件类型(sb,id,pc) d 目录文件。 l 符号链接(指向另一个文件,类似于瘟下的快捷方式)。 s 套接字文件。 b 块设备文件,二进制文件。 c 字符设备文件。 p 命名管道文件。 - 普通文件,或更准确地说,不属于以上几种类型的文件
  • u011283738
  • u011283738
  • 2016-11-10 15:40
  • 221

Linux中“一切皆文件”

“一切皆文件” 在linux开发过程中,相信大家都听过一句话叫作“limux下,一切皆文件”。这句话是linux/unix的哲学核心思想,下面我们就针对这句话给大家进行展开解释下。 这句话中的“文件”不仅仅是我们通常所指的文件,在linux和unix中它代表的更为宽泛。目录、字符设备、块设备...
  • bian_qing_quan11
  • bian_qing_quan11
  • 2017-05-15 19:59
  • 1261

linux中一切皆文件, 一切文件皆二进制

刚开始接触linux的时候, 看到过这样一句话:linux中一切皆文件。 当理解深刻后, 发现确实如此。         又记得当年学习C语言的时候, 看到书上介绍文本文件和二进制文件, 瞬间懵逼, 理解非常模糊。 后来玩h.264, 生成了一个test.26...
  • stpeace
  • stpeace
  • 2016-10-21 09:52
  • 3151

Linux下不可不知的文件类型及表示颜色

n    白色:普通文件  (用-表示) n    红色:压缩文件 n    蓝色:目录文件 (用d表示) n  ...
  • bootleader
  • bootleader
  • 2017-04-11 16:39
  • 435

linux下各种颜色的文件表示的文件类型

蓝色:目录, 绿色:可执行文件, 天蓝色:符号文件, 白色:普通文件, 黄色:设备文件, 红色:失效文件的链接, 浅红:压缩文件或tarball文件, 粉色:图片文件
  • qq_26671365
  • qq_26671365
  • 2016-10-17 13:09
  • 1259

[整理]Linux文件类型与ubuntu(LinuxMint)终端中文件颜色的含义

文件类型(共7种): - :普通文件 d:目录文件 (directory) c:字符设备文件 (char) b:块设备文件 (block) s:本地域套接口 (socket) p:有名管道 (pipeline) l:符号连接 (link) 终端中文件的颜色: 蓝色:目录 绿色:可执行文件;...
  • u011462025
  • u011462025
  • 2014-02-19 13:23
  • 1842
    个人资料
    • 访问:33927次
    • 积分:1173
    • 等级:
    • 排名:千里之外
    • 原创:72篇
    • 转载:42篇
    • 译文:0篇
    • 评论:3条
    文章分类