【自学Linux】Linux一切皆文件

news2024/11/16 6:36:32

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)和管道文件§。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红书数据平台:笔记爆文率提升的三大秘诀公式!

导语 对于小红书商家 / 博主来说,写出爆文就像买彩票,根本不能预知哪一篇会爆。2023年,小红书哪些内容会脱颖而出呢?我们又该如何把握热点趋势,实现优质内容转化出爆文~ 美妆作为小红书的长红赛道,本文我…

如何停止/重启/启动Redis服务

一、命令行直接启动/停止/重启redis 可以直接通过下面的命令启动/停止/重启redis /etc/init.d/redis-server start 启动redis服务 /etc/init.d/redis-server stop 停止redis服务 /etc/init.d/redis-server restart 重启redis服务1、启动redis服务…

BUUCTF-firmware1

题目下载:下载 新题型,记录一下 题目给出了flag形式,md5{网址:端口},下载发现是一个.bin文件 二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件&#x…

40/365 javascript 数据类型

1.数据类型 number类型:整数,小数都属于这一类,不具体区分 字符串:hello, "hello" 布尔类型:true,false 逻辑运算符: && || ! 比较运算符: : 类型不一致&#x…

openGauss数据库共享存储特性简介

openGauss 3.1.1是openGauss 5.0.0 release版本的Preview版本,希望广大社区伙伴和开发者基于此版本进行场景化验证,提前发现问题并反馈社区,社区将在LTS版本发布前进行问题修复。当前文档说明范围仅限企业版。 文章目录版本介绍继承功能&…

轻松在 MAUI 应用中播放音视频,MediaElement 现已发布!

最受期待的 .NET MAUI 控件之一:MediaElement 现已发布。有了 MediaElement,您可以轻松地在 .NET MAUI 应用程序中播放音频和视频,在这篇文章中,您将了解到有关 MediaElement 第一个版本的所有信息以及我们对未来的计划&#xff0…

8086汇编-35更灵活定位内存地址04

#pragma once/*35-更灵活定位内存地址04不同的寻址方式的灵活应用如果我们比较一下前面用到的几种定位内存地址的方法(可称为寻址方式),就可以发现有以下几种方式:(1)[idata] 用一个常量来表示地址&#xf…

新房装修流程详细步骤有哪些? 新房装修流程注意事项有哪些?

新房装修时,对于装修流程的详细步骤和装修过程中的一些注意事项,有必要了解一下,以免上当受骗,也免得考虑不周,后续造成一些隐患。新房装修流程详细步骤有哪些呢?1.新装装修流程第一步,首先&…

Java_Maven:4. maven 私服

目录 1 需求 2 分析 3 搭建私服环境 3.1 下载 nexus 3.2 安装 nexus 3.3 卸载 nexus 3.4 启动 nexus 3.5 仓库类型 4 将项目发布到私服 4.1 需求 4.2 配置 4.3 测试 5 从私服下载 jar 包 5.1 需求 5.2 管理仓库组 5.3 在 setting.xml 中配置仓库 5.4 测试从私…

C++之迭代器

迭代器C中&#xff0c;迭代器就是类似于指针的对象&#xff0c;但比指针的功能更丰富&#xff0c;它提供了对对象的间接访问&#xff0c;每个迭代器对象代表容器中一个确定的地址。举个例子&#xff1a;void test() {vector<int> vv{1,2,3,4,5};for(vector<int>::i…

大数据框架之Hadoop:MapReduce(一)MapReduce概述

1.1MapReduce定义 MapReduce是一个分布式计算框架&#xff0c;用于编写批处理应用程序&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一…

一文掌握如何对项目进行诊断?【步骤方法和工具】

作为项目经理和PMO&#xff0c;面对错综复杂的项目&#xff0c;需要对组织的项目运作情况进行精确的分析和诊断&#xff0c;找出组织项目管理中和项目运行中存在的问题和潜在隐患&#xff0c;分析其原因&#xff0c;预防风险&#xff0c;并且形成科学合理的决策建议和解决方案&…

day43【代码随想录】动态规划之一和零、完全背包理论基础

文章目录前言一、一和零&#xff08;力扣474&#xff09;二、完全背包前言 1、一和零 2、完全背包理论基础 一、一和零&#xff08;力扣474&#xff09; 求装满这个背包最多有多少个物品 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集…

Python实现查票以及自动购票....再也不用愁手速不够啦~

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 今天咱们来用Python做一个自动查票抢票的脚本&#xff0c;24小时抢票&#xff0c;谁抢的过你&#xff01; 准备工作 环境 Python 3.8 Pycharm 插件 谷歌浏览器驱动 模块 需要安装的第三方模块&#xff0c;直接pi…

极智AI | 算能SC5+智算卡驱动安装与升级

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多经验分享 大家好&#xff0c;我是极智视界&#xff0c;本文介绍一下 算能SC5智算卡驱动安装与升级。 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码下载&#xff0c;链接&#xff1a;ht…

2023美赛问题E:光污染

背景 背景 光污染是指任何过多或不当使用人造光的表现。我们所称为光污染的一些现象包括光侵入、过亮、以及光混乱。这些现象最容易在大城市太阳落山后观察到天空中的发光&#xff1b;然而&#xff0c;它们也可能发生在更偏远的地区。 光污染改变了我们对夜空的看法&#xff…

递归与尾递归

你肯定知道递归&#xff0c;大概也知道尾递归。可是为什么要在递归中分出尾递归这样一个类&#xff1f;尾递归的本质又是什么&#xff1f;许多人未必清楚。 递归原是Lisp语言提出的概念&#xff0c;后来被许多语言借鉴。递归指自我重复的结构&#xff0c;在编程语言中体现为函…

共享模型之工具(二)

1.自定义线程池 1>.在实际开发过程中建议不要使用JDK提供的方式创建线程池,因为底层不方便优化,在请求量非常大的情况下可能会出现OOM,我们需要手动实现一个线程池; 2>.代码实现: Slf4j public class TestThreadPoolDemo1 {public static void main(String[] args) {/…

容器安全风险and容器逃逸漏洞实践

本文博客地址&#xff1a;https://security.blog.csdn.net/article/details/128966455 一、Docker存在的安全风险 1.1、Docker镜像存在的风险 不安全的第三方组件&#xff1a;用户自己的代码依赖若干开源组件&#xff0c;这些开源组件本身又有着复杂的依赖树&#xff0c;甚至…

在 Python 中只接受数字作为用户输入

只接受数字作为用户输入&#xff1a; 使用 while True 循环进行循环&#xff0c;直到用户输入一个数字。使用 float() 类尝试将值转换为浮点数。如果用户输入了一个数字&#xff0c;请使用 break 语句跳出循环。 while True:try:# &#x1f447;️ use int() instead of floa…