菜单

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

2020年3月1日 - 计算机服务器

在 Unix 和它衍生的诸如 Linux
系统中,一切都得以视作文件。就算它仅仅只是二个浮泛的定义,但这是真情。假若有不是文本的,那它一定是正运营的长河。

要领会这一点,能够比如,您的根目录(/)的上空充斥着不一致品类的 Linux
文件。当您创造一个文书或向系统传输二个文本时,它会在大意磁盘上据有的一部分空中,而且是多少个一定的格式(文件类型)。

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

尽管 Linux
系统粤语件和目录未有什么样两样,但目录还恐怕有一个首要的法力,那正是有构造性的分组存款和储蓄别的文件,以有益搜索访谈。全体的硬件组件都意味为文件,系统利用这几个文件来与硬件通讯。

要了然那点,能够举个例子,您的根目录(/)的长空充斥着区别品种的 Linux
文件。当你创立一个文本或向系统传输多少个文件时,它会在物理磁盘上据有的片段空间,何况是两个一定的格式(文件类型)。
即使 Linux
系统粤语件和目录未有怎么差异,但目录还应该有一个最首要的功力,那就是有构造性的分组存款和储蓄别的文件,以便于寻觅访问。全部的硬件组件都表示为文件,系统运用那几个文件来与硬件通讯。
那么些考虑是对 Linux 中的各样东西的首要论述,由此像文书档案、目录(Mac OS X 和
Windows
系统下称之为文件夹)、键盘、监视器、硬盘、可活动媒体设备、打字与印刷机、调制解调器、虚构终端,还有进程间通信(IPC)和网络通信等输入/输出能源都以概念在文件系统空间下的字节流。
一切都可视作是文本,其最显然的好处是对于地方所列出的输入/输出财富,只必要平等的一套
Linux 工具、实用程序和 API。 纵然在 Linux
中任何都可看做是文本,但也是有一点点出奇的文本,举个例子套接字和下令管道。 Linux
系统中有三种为主的文件类型:

那么些思谋是对 Linux 中的各样东西的关键论述,因而像文书档案、目录(Mac OS X 和
Windows
系统下称之为文件夹)、键盘、监视器、硬盘、可活动传播媒介设备、打字与印刷机、调制解调器、设想终端,还会有进度间通讯(IPC)和互联网通讯等输入/输出财富都以概念在文件系统空间下的字节流。

金沙国际棋牌下载官网,全部都可作为是文件,其最显然的裨益是对此地点所列出的输入/输出能源,只需求平等的一套
Linux 工具、实用程序和 API。

日常来讲/常规文件

即使如此在 Linux
中全方位都可看做是文件,但也会有局部独出心裁的文件,比如套接字和指令管道。

它们是带有文本、数据、程序指令等数据的文本,其在 Linux
系统中是最普及的一种。蕴含如下:

Linux 文件类型的差异之处?

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

枯燥无味/常规文件

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

非常文件

非常文件

金沙国际唯一官网,特殊文件富含以下两种:

块文件block:设备文件,对拜望系统硬件零部件提供了缓存接口。它们提供了一种通过文件系统与道具驱动通讯的措施。

有关于块文件多个关键的属性正是它们能在指准时间内传输大块的数码和消息。

列出某目录下的块文件:

# ls -l /dev | grep "^b"

输出例子

brw-rw----  1 root disk        7,   0 May 18 10:26 loop0
brw-rw----  1 root disk        7,   1 May 18 10:26 loop1
brw-rw----  1 root disk        7,   2 May 18 10:26 loop2
brw-rw----  1 root disk        7,   3 May 18 10:26 loop3
brw-rw----  1 root disk        7,   4 May 18 10:26 loop4
brw-rw----  1 root disk        7,   5 May 18 10:26 loop5
brw-rw----  1 root disk        7,   6 May 18 10:26 loop6
brw-rw----  1 root disk        7,   7 May 18 10:26 loop7
brw-rw----  1 root disk        1,   0 May 18 10:26 ram0
brw-rw----  1 root disk        1,   1 May 18 10:26 ram1
brw-rw----  1 root disk        1,  10 May 18 10:26 ram10
brw-rw----  1 root disk        1,  11 May 18 10:26 ram11
brw-rw----  1 root disk        1,  12 May 18 10:26 ram12
brw-rw----  1 root disk        1,  13 May 18 10:26 ram13
brw-rw----  1 root disk        1,  14 May 18 10:26 ram14
brw-rw----  1 root disk        1,  15 May 18 10:26 ram15
brw-rw----  1 root disk        1,   2 May 18 10:26 ram2
brw-rw----  1 root disk        1,   3 May 18 10:26 ram3
brw-rw----  1 root disk        1,   4 May 18 10:26 ram4
brw-rw----  1 root disk        1,   5 May 18 10:26 ram5
...

字符文件(Character):
也是设备文件,对会见系统硬件组件提供了非缓冲串行接口。它们与器具的通讯专门的学问方法是二次只传输二个字符的数据。

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

# ls -l /dev | grep "^c"

出口例子

crw-------  1 root root       10, 235 May 18 15:54 autofs
crw-------  1 root root       10, 234 May 18 15:54 btrfs-control
crw-------  1 root root        5,   1 May 18 10:26 console
crw-------  1 root root       10,  60 May 18 10:26 cpu_dma_latency
crw-------  1 root root       10, 203 May 18 15:54 cuse
crw-------  1 root root       10,  61 May 18 10:26 ecryptfs
crw-rw----  1 root video      29,   0 May 18 10:26 fb0
crw-rw-rw-  1 root root        1,   7 May 18 10:26 full
crw-rw-rw-  1 root root       10, 229 May 18 10:26 fuse
crw-------  1 root root      251,   0 May 18 10:27 hidraw0
crw-------  1 root root       10, 228 May 18 10:26 hpet
crw-r--r--  1 root root        1,  11 May 18 10:26 kmsg
crw-rw----+ 1 root root       10, 232 May 18 10:26 kvm
crw-------  1 root root       10, 237 May 18 10:26 loop-control
crw-------  1 root root       10, 227 May 18 10:26 mcelog
crw-------  1 root root      249,   0 May 18 10:27 media0
crw-------  1 root root      250,   0 May 18 10:26 mei0
crw-r-----  1 root kmem        1,   1 May 18 10:26 mem
crw-------  1 root root       10,  57 May 18 10:26 memory_bandwidth
crw-------  1 root root       10,  59 May 18 10:26 network_latency
crw-------  1 root root       10,  58 May 18 10:26 network_throughput
crw-rw-rw-  1 root root        1,   3 May 18 10:26 null
crw-r-----  1 root kmem        1,   4 May 18 10:26 port
crw-------  1 root root      108,   0 May 18 10:26 ppp
crw-------  1 root root       10,   1 May 18 10:26 psaux
crw-rw-rw-  1 root tty         5,   2 May 18 17:40 ptmx
crw-rw-rw-  1 root root        1,   8 May 18 10:26 random

标记链接文件(Symbolic link ):
符号链接是指向系统上其余文件的引用。由此,符号链接文件是指向任何文件的公文,那几个文件能够是目录或正规文件。

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

# ls -l /dev/ | grep "^l"

出口例子

lrwxrwxrwx  1 root root             3 May 18 10:26 cdrom -> sr0
lrwxrwxrwx  1 root root            11 May 18 15:54 core -> /proc/kcore
lrwxrwxrwx  1 root root            13 May 18 15:54 fd -> /proc/self/fd
lrwxrwxrwx  1 root root             4 May 18 10:26 rtc -> rtc0
lrwxrwxrwx  1 root root             8 May 18 10:26 shm -> /run/shm
lrwxrwxrwx  1 root root            15 May 18 15:54 stderr -> /proc/self/fd/2
lrwxrwxrwx  1 root root            15 May 18 15:54 stdin -> /proc/self/fd/0
lrwxrwxrwx  1 root root            15 May 18 15:54 stdout -> /proc/self/fd/1

Linux 中使用 ln 工具就足以创造多个标志链接文件,如下所示:

# touch file1.txt
# ln -s file1.txt /home/tecmint/file1.txt  [创建符号链接文件]
# ls -l /home/tecmint/ | grep "^l"         [列出符号链接文件]

在上面包车型大巴例子中,首先大家在 /tmp 目录创造了一个叫做 file1.txt 的文件,然后创设符号链接文件,将/home/tecmint/file1.txt 指向 /tmp/file1.txt 文件。

管道Pipe和指令管道Named pipe :
将三个进度的输出连接到另多少个进程的输入,进而允许进度间通信(IPC)的文本。

取名管道实际上是三个文书,用来使多个进度并行通讯,就如贰个 Linux
管道同样。

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

# ls -l | grep "^p"

出口例子:

prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe1
prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe2
prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe3
prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe4
prw-rw-r-- 1 tecmint tecmint    0 May 18 17:47 pipe5

在 Linux 中得以行使 mkfifo 工具来创设八个命名管道,如下所示:

# mkfifo pipe1
# echo "This is named pipe1" > pipe1

在上的例证中,大家成立了二个叫做 pipe1 的命名管道,然后使用 echo
命令 插手一些多少,那之后在拍卖输入的数量时 shell
就变成非人机联作式的了(LCTT 译注:被管道占住了)。

下一场,大家开辟此外一个 shell
终端,运转其余的一声令下来打字与印刷出刚加盟管道的数据。

# while read line ;do echo "This was passed-'$line' "; done<pipe1

套接字文件(socket):
提供经过间通讯方法的文件,它们能在运维在差异情形中的进度之间传输数据和信息。

那么,套接字可感到运维网络上不一样机器中的进度提供数据和音信传输。

三个 socket 运转的事例正是网页浏览器连接到网址服务器的经过。

# ls -l /dev/ | grep "^s"

出口例子:

srw-rw-rw-  1 root root             0 May 18 10:26 log

上面是接收 C 语言编写的调用 socket() 系统调用的例证。

int socket_desc= socket(AF_INET, SOCK_STREAM, 0 );

上例中:

使用 socket_desc 来援用管道文件,它跟文件陈诉符是相近的,然后再采用系统函数 read() 和 write() 来分别从这些管道文件读写多少。

诡异文件包含以下两种:

目录文件

那是一对奇怪的文件,不仅可以够包蕴普通文书又可含蓄其余的出格文件,它们在
Linux 文件系统中是以根(/)目录为起源分层组织存在的。

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

# ls -l / | grep "^d"

输出例子:

drwxr-xr-x   2 root root  4096 May  5 15:49 bin
drwxr-xr-x   4 root root  4096 May  5 15:58 boot
drwxr-xr-x   2 root root  4096 Apr 11  2015 cdrom
drwxr-xr-x  17 root root  4400 May 18 10:27 dev
drwxr-xr-x 168 root root 12288 May 18 10:28 etc
drwxr-xr-x   3 root root  4096 Apr 11  2015 home
drwxr-xr-x  25 root root  4096 May  5 15:44 lib
drwxr-xr-x   2 root root  4096 May  5 15:44 lib64
drwx------   2 root root 16384 Apr 11  2015 lost+found
drwxr-xr-x   3 root root  4096 Apr 10  2015 media
drwxr-xr-x   3 root root  4096 Feb 23 17:54 mnt
drwxr-xr-x  16 root root  4096 Apr 30 16:01 opt
dr-xr-xr-x 223 root root     0 May 18 15:54 proc
drwx------  19 root root  4096 Apr  9 11:12 root
drwxr-xr-x  27 root root   920 May 18 10:54 run
drwxr-xr-x   2 root root 12288 May  5 15:57 sbin
drwxr-xr-x   2 root root  4096 Dec  1  2014 srv
dr-xr-xr-x  13 root root     0 May 18 15:54 sys
drwxrwxrwt  13 root root  4096 May 18 17:55 tmp
drwxr-xr-x  11 root root  4096 Mar 31 16:00 usr
drwxr-xr-x  12 root root  4096 Nov 12  2015 var

你可以选取 mkdir 命令来成立多少个索引。

# mkdir -m 1666 tecmint.com
# mkdir -m 1666 news.tecmint.com
# mkdir -m 1775 linuxsay.com

块文件(block)

结论

于今理应对怎么 Linux 系统中一切都以文件以致 Linux
系统中得以存在怎么样类型的文件有一个清楚的认知了。

您可以透过阅读越来越多关于各种文件类型的文章和呼应的创造进度等来扩大越来越多学问。小编梦想那篇教程对您抱有助于。有别的疑问或有补充的学识,请留下评论,一同来谈谈。

块文件(block):设备文件,对探问系统硬件构件提供了缓存接口。它们提供了一种通过文件系统与设备驱动通讯的艺术。
有关于块文件一个重点的性质正是它们能在指准时间内传输大块的数量和消息。
列出某目录下的块文件:

# ls -l /dev | grep "^b"

出口例子

brw-rw----  1 root disk        7,   0 May 18 10:26 loop0
brw-rw----  1 root disk        7,   1 May 18 10:26 loop1
brw-rw----  1 root disk        7,   2 May 18 10:26 loop2
brw-rw----  1 root disk        7,   3 May 18 10:26 loop3
brw-rw----  1 root disk        7,   4 May 18 10:26 loop4
brw-rw----  1 root disk        7,   5 May 18 10:26 loop5
brw-rw----  1 root disk        7,   6 May 18 10:26 loop6
brw-rw----  1 root disk        7,   7 May 18 10:26 loop7
brw-rw----  1 root disk        1,   0 May 18 10:26 ram0
brw-rw----  1 root disk        1,   1 May 18 10:26 ram1
brw-rw----  1 root disk        1,  10 May 18 10:26 ram10
brw-rw----  1 root disk        1,  11 May 18 10:26 ram11
brw-rw----  1 root disk        1,  12 May 18 10:26 ram12
brw-rw----  1 root disk        1,  13 May 18 10:26 ram13
brw-rw----  1 root disk        1,  14 May 18 10:26 ram14
brw-rw----  1 root disk        1,  15 May 18 10:26 ram15
brw-rw----  1 root disk        1,   2 May 18 10:26 ram2
brw-rw----  1 root disk        1,   3 May 18 10:26 ram3
brw-rw----  1 root disk        1,   4 May 18 10:26 ram4
brw-rw----  1 root disk        1,   5 May 18 10:26 ram5
...

字符文件(Character)

字符文件(Character):
也是器具文件,对拜望系统硬件组件提供了非缓冲串行接口。它们与道具的通信工作措施是一次只传输八个字符的多寡。
列出某目录下的字符文件:

# ls -l /dev | grep "^c"

输出例子

crw-------  1 root root       10, 235 May 18 15:54 autofs
crw-------  1 root root       10, 234 May 18 15:54 btrfs-control
crw-------  1 root root        5,   1 May 18 10:26 console
crw-------  1 root root       10,  60 May 18 10:26 cpu_dma_latency
crw-------  1 root root       10, 203 May 18 15:54 cuse
crw-------  1 root root       10,  61 May 18 10:26 ecryptfs
crw-rw----  1 root video      29,   0 May 18 10:26 fb0
crw-rw-rw-  1 root root        1,   7 May 18 10:26 full
crw-rw-rw-  1 root root       10, 229 May 18 10:26 fuse
crw-------  1 root root      251,   0 May 18 10:27 hidraw0
crw-------  1 root root       10, 228 May 18 10:26 hpet
crw-r--r--  1 root root        1,  11 May 18 10:26 kmsg
crw-rw----+ 1 root root       10, 232 May 18 10:26 kvm
crw-------  1 root root       10, 237 May 18 10:26 loop-control
crw-------  1 root root       10, 227 May 18 10:26 mcelog
crw-------  1 root root      249,   0 May 18 10:27 media0
crw-------  1 root root      250,   0 May 18 10:26 mei0
crw-r-----  1 root kmem        1,   1 May 18 10:26 mem
crw-------  1 root root       10,  57 May 18 10:26 memory_bandwidth
crw-------  1 root root       10,  59 May 18 10:26 network_latency
crw-------  1 root root       10,  58 May 18 10:26 network_throughput
crw-rw-rw-  1 root root        1,   3 May 18 10:26 null
crw-r-----  1 root kmem        1,   4 May 18 10:26 port
crw-------  1 root root      108,   0 May 18 10:26 ppp
crw-------  1 root root       10,   1 May 18 10:26 psaux
crw-rw-rw-  1 root tty         5,   2 May 18 17:40 ptmx
crw-rw-rw-  1 root root        1,   8 May 18 10:26 random

标志链接文件(Symbolic link)

标志链接文件(Symbolic link) :
符号链接是指向系统上任何文件的援引。因而,符号链接文件是指向其余文件的文书,那三个文件可以是目录或寻常文件。
列出某目录下的号子链接文件:

# ls -l /dev/ | grep "^l"

出口例子

lrwxrwxrwx  1 root root             3 May 18 10:26 cdrom -> sr0
lrwxrwxrwx  1 root root            11 May 18 15:54 core -> /proc/kcore
lrwxrwxrwx  1 root root            13 May 18 15:54 fd -> /proc/self/fd
lrwxrwxrwx  1 root root             4 May 18 10:26 rtc -> rtc0
lrwxrwxrwx  1 root root             8 May 18 10:26 shm -> /run/shm
lrwxrwxrwx  1 root root            15 May 18 15:54 stderr -> /proc/self/fd/2
lrwxrwxrwx  1 root root            15 May 18 15:54 stdin -> /proc/self/fd/0
lrwxrwxrwx  1 root root            15 May 18 15:54 stdout -> /proc/self/fd/1

Linux 中运用 ln 工具就能够创造八个符号链接文件,如下所示:

# touch file1.txt
# ln -s file1.txt /home/tecmint/file1.txt  [创建符号链接文件]
# ls -l /home/tecmint/ | grep "^l"         [列出符号链接文件]

在上头的例子中,首先我们在 /tmp 目录创制了一个名字为 file1.txt
的文本,然后成立符号链接文件,将 /home/tecmint/file1.txt 照准/tmp/file1.txt 文书。

管道(Pipe)和下令管道(Named pipe) 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图