Linux学习笔记9 文件系统的基础

ops/2024/10/20 13:01:16/

一、查看文件组织结构

Linux中一切都是文件。

Linux和Win的文件系统不是一个结构,Linux存在的根目录是所有目录的起点。

所有的存储空间和设备共享一个根目录,不同的磁盘块和分区挂载在其下,成为某个子目录的子目录,甚至设备也挂载成某个子目录下的一个文件。

创建Linux文件系统,最起码要有一个根文件系统,作为文件系统树的根节点。其他文件系统(分区)则是作为子目录。但是不是所有子目录都是一个物理分区,可能单纯就是一个子目录。

目录是逻辑上的从属和区分,分区则是物理上存在的区分。

使用tree命令可以观察树形目录结构。如果显示没有安装就安装一下:

sudo apt install tree

更详细的使用方法可以使用man命令查看使用手册。 

分区和目录的关系:

分区存在自己的文件系统,有自己的管理方法。

目录是逻辑结构,方便逻辑上的管理。

分区可以作为目录挂载到目录树上,这样才能进行读写。

二、路径

相对路径和绝对路径,从根目录开始走就是绝对路径,从当前目录走就是相对路径。

 几个表示相对路径时可能用到的:

. 表示当前路径
.. 表示父路径
~ 表示当前用户主目录
~user 表示user的主目录,user是某个用户的账号
tree -L 1

 三、常见的系统目录

/bin 包含一批可执行命令
/boot 和启动引导有关
/cdrom 光盘的挂载点
/dev 包含支持的所有设备文件
/etc 控制中心,应用程序的配置中心
/home 主目录,其下有对应不同用户的子目录
/lib 和/lib64 库文件
/lost+found 每一个文件系统都有一个此目录,包含fsck删除的目录或者文件
/media 移动介质挂载点
/mnt 文件系统临时挂载点
/opt 可选应用程序的安装位置
/proc 进程文件存放位置
/root root用户的主目录
/sbin 普通用户不能使用的可执行文件
/sys 系统配置
/tmp 临时目录
/usr 一个比较特殊复杂的目录,可能是一个单独的文件系统
/var 作为子目录,或者也可以是一个单独的文件系统,包含可变数据文件

四、文件类型

纯文本文件

这种文件可以直接读取和阅读。

二进制文件

给机器执行的机器代码文件。

其他数据文件

数据库文件,图片文件。

目录文件

目录也作为一种特殊文件存在。

ls -l命令可以看到文件的具体类型。

也可以使用file命令。

字符设备

特殊文件,只能按字节流读取。在ls中表示为c。

进入/dev目录,找到其中的设备文件:

块设备文件

特殊文件,但是支持随机访问,读写以块为单位。表示为b。

也可以使用file命令。 

 

 管道文件

有两种,匿名和命名管道两种。

匿名管道不存在具体的名称,只能提供给具有亲缘关系的进程通信。

命名管道提供一个文件名与之关联。作为一个设备文件。文件类型在ls中会展示为p。

两个方法创建命名管道:

mknod fifoname p

mkfifo fifoname

 

 Linux提供函数创建管道文件。

int mkfifo(const char *pathname,mode_t mode);

pathname是管道名,mode是文件的访问权限,用0777表示就是所有用户都可以读取。管道存在时,输入和输出按照先入先出的原则,如果我们使用cat读取一个管道,会阻塞在那里,此时使用另外一个命令向这个管道输入,则会给cat内容。

此时就实现了不同进程间的数据通信。

套接字

套接字也是文件。

ls表示为s。一般都用于编写程序。很少在shell中使用。

五、文件的链接

链接在Linux系统中可以被当做原文件对待(和Windows的快捷方式不同)。

软链接

又叫做符号链接,只是类似于一个指针,指向具体位置,可以跨越文件系统,甚至指向远程文件系统。原始文件被删除,软链接就失效,会指向一个不存在的地方。

形象来说就是指路牌。

在ls中的表示为l

硬链接

指向文件在磁盘上实际存储的位置,相当于文件的别名。而不是指向文件在目录中的位置。

不能跨越文件系统。

在目录(逻辑上)删除和移动不会影响硬链接。如果删除的文件还有硬链接,这个文件还会被保留。

相当于一个人名。

在ls中不会特地表示。

ls -i 可以看到硬链接的数目。

我的理解:

软链接就是在目录树里添加一个文件的住址,凭借地址找到这个文件。(删掉软链接对源文件没有影响,相当于拔掉路牌。)

硬链接是一个通向文件的门,所有的硬链接都属于这个文件,是它实际所在地的门。删掉硬链接相当于关门,所有门都关上,这个文件就被删除(我们失去了对他的引用)。


http://www.ppmy.cn/ops/126986.html

相关文章

【Linux】< 条件变量等待>解决< 线程饥饿问题 >——【多线程同步问题】

前言 大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

没有HTTPS 证书时,像这样实现多路复用

在没有 HTTPS 证书的情况下,HTTP/2 通常不能直接通过 HTTP 协议使用。虽然 HTTP/2 协议的规范是可以支持纯 HTTP 连接(即通过 http:// 协议),但大多数主流浏览器(如 Chrome、Firefox)都 强制要求 HTTP/2 必须在 HTTPS 上运行。这是出于安全和隐私的考虑。 因此,如果你没…

DNS代理是什么?浅析DNS代理的工作原理及应用

DNS代理作为计算机网络中重要的一环,扮演着连接用户和互联网服务的关键角色。来了解DNS代理的定义、功能、工作原理以及在网络中的应用场景和重要性吧。 一、理解DNS代理。 DNS代理充当在用户和真正的DNS服务器之间的中介。它接收来自用户端的DNS查询请求&#xf…

pytest中@pytest.fixture常用顺序function

ytest中pytest.fixture用法讲解 1、测试函数开始之前2、执行测试函数:3、测试函数结束后: 备注:内容来自chatGPT 在 pytest 中,pytest.fixture 是一个非常强大的功能,用于设置测试所需的环境和状态。它可以通过 scope…

SpringBoot框架下的汽车票在线预订系统

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

数据结构_day5

目录 7.树 7.1 特性 7.1.1 什么是树 7.1.2 关于树的一些术语 7.2 二叉树 7.2.1 什么是二叉树 7.2.2 二叉树性质(重点) 7.2.3 满二叉树和完全二叉树 7.2.4 二叉树的存储结构 7.3 二叉树的链式存储 7.4 层次遍历 哈夫曼树 Huffman 图 1.什么是图 2.图的基本…

【Hive】3-HiveSQL 数据定义语言(DDL)

HiveSQL 数据定义语言(DDL) SQL中DDL语法的作用 数据定义语言(Data Definition Language,DDL),是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括datab…

C语言入门笔记:1.1 搭建开发环境

文章目录 一、C51与C251的区别二、安装Keil MDK三、C语言&#xff1a;菜鸟教程 一、C51与C251的区别 <1> 指令集数量不一样&#xff0c;C251有268条指令&#xff0c;C51有111条指令&#xff0c;前者可向下兼容后者的指令集&#xff0c;即Binary模式。 <2> 从指令种…