【自学Linux】Linux一切皆文件

2023-05-16

Linux一切皆文件

Linux一切皆文件教程

Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。

Linux一切皆文件说明

普通文件

类似 mp4、pdf、html 这样,可直接拿来使用的文件都属于普通文件,Linux 用户根据访问权限的不同可以对这些文件进行查看、删除以及更改操作。

目录文件

对于用惯 Windows 系统的用户来说,目录是文件可能不太好理解。

Linux 系统中,目录文件包含了此目录中各个文件的文件名以及指向这些文件的指针,打开目录等同于打开目录文件,只要你有权限,可以随意访问目录中的任何文件。

注意,目录文件的访问权限,同普通文件的执行权限,是一个意思。

字符设备文件和块设备文件

这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用。例如,磁盘光驱属于块设备文件,串口设备则属于字符设备文件。

Linux 系统中的所有设备,要么是块设备文件,要么是字符设备文件。

套接字文件(socket)

套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。

符号链接文件(symbolic link)

类似与 Windows 中的快捷方式,是指向另一文件的简介指针(也就是软链接)。

管道文件(pipe)

主要用于进程间通信。例如,使用 mkfifo 命令创建一个 FIFO 文件,与此同时,启用进程 A 从 FIFO文件读数据,启用进程 B 从 FIFO文件中写数据,随写随读。

Linux一切皆文件总结

Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。


Linux文件类型

Linux文件类型教程

Linux 中一共有七种文件类型,即普通文件(-)、目录文件(d)、字符设备文件©、块设备文件(b)、套接字文件(s)、符号链接文件(l)和管道文件§。

Linux七种文件类型详解

文件属性文件类型
-常规文件,即 file
d目录文件
bblock device 即块设备文件,如硬盘;支持以 block 为单位进行随机访问
ccharacter device 即字符设备文件,如键盘支持以 character 为单位进行线性访问
lsymbolic link 即符号链接文件,又称软链接文件
ppipe 即命名管道文件
ssocket 即套接字文件,用于实现两个进程进行通信

普通文件

Linux 下的普通文件就是我们在 Windows 系统各个盘里看到的那些文件。

字符设备与块设备文件

字符设备只能以字节为最小单位访问,而块设备以块为单位访问,例如 512 字节,1024 字节等。

块设备可以随机访问,但是字符设备不可以,字符和块没有访问量大小的限制,块也可以以字节为单位来访问。

套接字文件

使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。

Unix 域套接字是通过套接字 API 实现的简单的协议族。实际上它并不代表一个网络协议;它只能连接到同一台机器上的套接字。它提供了灵活的IPC机制。它的地址是它所在的文件系统的路径名,创建之后套接字就和路径名绑定在一起。用来表示 Unix 域地址的套接字文件能够使用 stat() 但是不能通过 open() 打开,而且应该使用套接字 API 对它进行操作。

Unix 域套接字是面向连接的,每个套接字的连接都建立了一个新的通讯信道。服务器可能同时处理许多连接,但对于每个连接都有不同的文件描述符。这个属性使 Unix 域套接字能够比命名管道更好的适应 IPC 任务。

链接文件

链接文件可以分为硬链接文件和软链接文件。

硬链接

硬链接就是通过设备节点 inode 创建的,硬链接就是同一个文件使用了多个别名,他们有共同的 inode。

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。

硬链接不能对目录进行创建,只可对文件创建。

软链接

软链接文件是通过文件的绝对路径创建的,软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。

命名管道文件

命名管道文件负责将一个进程的信息传递给另一个进程,从而使该进程的输出成为一个另一个进程的输入的内存部分,这样的文件被称作命名管道文件,又称管道文件。

管道是 Linux 提供的最早的进程间通信方式之一,大致可以分为有无名管道和命名管道两种。Linux 中的命名管道提供两个进程之间的通讯方式,可以把一个程序的输出直接连接到另一个程序的输入。

管道通常用于从一个进程读取数据直接发送给第二个进程处理的场合。

Linux查看文件

我们在 Linux 上,使用 ls 命令,随便查看一个文件,具体命令如下:

ls -l haicoder.txt

运行后,终端输出如下:

在这里插入图片描述

我们看到,最前面的输出的字符 -rw-r--r-- 就是文件的属性信息,其中第 1 个字母代表的就是文件类型,这里的 - 代表的就是普通的文件。现在,我们再次使用 ls 命令,查看一个文件夹,具体命令如下:

ls -ld haicoder

运行后,终端输出如下:

在这里插入图片描述

我们看到,这次输出的第一个字符变成了 d,即,表明其是一个文件夹。

Linux查看设备文件

我们在 Linux 上,使用 ls 命令,查看 /dev 目录下文件,具体命令如下:

ls -l /dev

运行后,终端输出如下:

在这里插入图片描述

我们看到,第一行的输出和第三行的输出的第 1 个字母代表是 c,表明其是一个字符设备文件,我们继续往下看,可以看到如下的输出:

在这里插入图片描述

我们可以看到,第一行的第一个设备信息为 l,其代表的就是链接文件,同时,第四行的第一个设备信息为 s,表明其为 socket 文件,我们接着往下看,可以看到如下的输出:

在这里插入图片描述

我们可以看到,第一行的第一个设备信息为 b,其代表的就是块设备文件。

Linux文件类型总结

Linux 中一共有七种文件类型,即普通文件(-)、目录文件(d)、字符设备文件©、块设备文件(b)、套接字文件(s)、符号链接文件(l)和管道文件§。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【自学Linux】Linux一切皆文件 的相关文章

随机推荐

  • 飞控与ROS通信之路之准备工作

    请先进行环境的搭建 xff1a 参考我的另一篇 博客 目录 xff1a 一 使用QGC为飞控下载固件 二 测试串口端口 三 测试信息 一 QGC下载飞控固件 使用USB链接电脑与飞控 xff0c 并打开QGC 重新插拔USB xff0c 在
  • ROS-新建工作空间、功能包、利用c++、python语言编写发布和订阅通信

    文章目录 1 创建工作空间与功能包1 1工作空间1 1 1工作空间的介绍1 1 2创建工作空间1 1 3编译工作空间 1 2功能包1 2 1功能包的介绍1 2 1功能包的创建1 2 2功能包的编译1 2 3功能包中文件的意义1 2 4设置环
  • 移动端苹果IOS中select的option值不显示问题解决

    移动端苹果IOS中select的option值不显示问题解决 遇到一个问题就是最原始的select标签在安卓手机上显示正常 xff0c 但是在IOS苹果高版本上点击select xff0c 在页面上有占位 xff0c 随便点击也可以将值选在
  • Maven入门 常用知识

    目录 maven目录 Maven常用命令说明 设置http代理 Maven插件安装 xff0c 基于IDEA Maven使用 依赖的配置 依赖范围 传递性依赖 依赖范围 排除依赖 归类依赖 仓库 仓库的由来 仓库的布局 仓库的分类 本地仓库
  • 2020-10-28 元学习(Meta Learning)与迁移学习(Transfer Learning)的区别联系是什么?

    本文转自 xff1a https www zhihu com question 299020462 answer 653199202 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 迁
  • 软件安装系列:Boost 的安装与初试

    这期开始会不断更新一些软件安装使用过程中的一些问题 xff0c 帮着各位老师快速的实现软件的使用 xff0c 在安装过程中总是出现这样那样的问题 xff0c 我们就将基于此类问题 xff0c 总结一些解决办法 xff0c 帮助大家快速成长
  • PHP 出现 ‘continue’ not in the ‘loop’ or ‘switch’ context错误

    把 continue 删除 改为 return 即可
  • Java随机数-获取0到9内的随机数

    本文参考 嗨客网 Java 实战 Java随机数 描述 运用 Java 的 Random 得到随机数 题目 获取 0 到 9 内的随机数 xff08 包括 0 和 9 xff09 题目解决思路 创建一个生产随机数的对象 通过对象方法获取随机
  • Java基础练习题及详细答案

    本文参考 嗨客网 Java 实战 前言 本篇文章给大家安利一些关于 Java 基础的练习题 xff0c 每道题都附有答案链接 xff0c 答案解题的每个步骤到运行结果都十分详细 xff0c 十分适合小白拿来练习 xff0c 也十分适合准备面
  • STM32 四线驱动1602A 填坑!解决重启乱码

    最近学STM32 xff0c 用来丰富一下生活 xff0c 一个四线1602搞得一星期 xff0c 对自己的智商也是醉了 填坑开始 xff01 用的是HAL库编写的 xff0c 仅仅在ODR寄存器使用了一点寄存器操作 xff0c 其余全是H
  • 谭浩强C语言练习题及详细答案

    本文参考 嗨客网 Java 实战 前言 本篇文章分享的是 C 语言程序设计 xff08 谭浩强 C 语言第三版 xff09 课后习题及答案 xff0c 大家在学习了 C 语言程序设计后 xff0c 做几道相关的练习题 xff0c 复习一下该
  • 【自学C++】Windows安装C++语言开发环境

    Windows安装C 43 43 语言开发环境 Windows安装C 43 43 语言开发环境教程 C 43 43 的开发环境可以直接使用 C 语言 的开发环境 xff0c 同时 xff0c Windows 本身就自带 C 43 43 语言
  • 【自学Python】Python bytes转string

    Python bytes转string Python string转bytes教程 在 Python 中 xff0c bytes 类型和 字符串 的所有操作 使用和内置方法也都基本一致 因此 xff0c 我们也可以实现将 bytes 类型转
  • 【自学Python】Python查找字符串位置

    Python查找字符串位置 大纲 Python查找字符串位置教程 在开发过程中 xff0c 很多时候我们有在一个 字符串 中查找另一个字符串位置的需求 xff0c 在 Python 中 xff0c 在一个字符串中查找另一个字符串的位置我们使
  • 【自学Docker 】Docker port命令

    Docker port命令 概述 docker port命令教程 docker port 命令可以用于列出指定的 Docker容器 的端口映射 xff0c 或者将容器里的端口映射到宿主机 该命令后面的 CONTAINER 可以是容器Id x
  • 【自学Docker】Docker pull命令

    大纲 Docker pull命令 docker pull命令教程 docker pull 命令用于从镜像仓库中拉取或者更新指定镜像 docker pull 命令中的 name 即镜像名称后面可以跟上镜像标签或者镜像摘要 docker pul
  • 【自学Docker】Docker push命令

    大纲 Docker push命令 docker push命令教程 docker push 命令用于将本地的 Docker镜像 上传到 Docker镜像仓库 docker push命令使用之前需要要先登陆到镜像仓库 docker push命令
  • 【自学Linux】Linux运行级别

    Linux运行级别 Linux运行级别教程 Linux 可以支持运行级别的设置 xff0c 运行级别就是操作系统当前正在运行的功能级别 xff0c 级别是从 0 到 6 Centos7 系统之前的版本是通过 etc inittab 文件来定
  • 【自学Linux】 Linux文件目录结构

    Linux文件目录结构 Linux文件目录结构教程 在 Linux 中 xff0c 有一个很经典的说法 xff0c 叫做一切皆文件 xff0c 因此 xff0c 我们在系统学习 Linux 之前 xff0c 首先要了解 Linux 的文件目
  • 【自学Linux】Linux一切皆文件

    Linux一切皆文件 Linux一切皆文件教程 Linux 中所有内容都是以文件的形式保存和管理的 xff0c 即一切皆文件 xff0c 普通文件是文件 xff0c 目录是文件 xff0c 硬件设备 xff08 键盘 监视器 硬盘 打印机