Linux(四)目录和文件(一) 文件类型、路径及目录操作 您所在的位置:网站首页 计算机文件的路径分为绝对路径和什么 Linux(四)目录和文件(一) 文件类型、路径及目录操作

Linux(四)目录和文件(一) 文件类型、路径及目录操作

2024-07-18 08:27| 来源: 网络整理| 查看: 265

一、一切皆文件

在Linux的设计思想中,很重要的一点,就是“一切皆文件”。外设(键盘、鼠标、屏幕)、磁盘、打印机、甚至\color{red}{目录},都是文件。这是一种基于对计算机的理解,做出的很强的逻辑抽象。以下,我们会简单基于几种文件的分析,去理解和体会这种设计思路。

1.1 普通文件

首先来看普通文件,也就是数据文件。我们存放表格、文档、照片、视频等等的文件,是普通文件。普通文件里面,是用户的数据。它存放在硬盘上,具有自己的存放地址(起始扇区和结束扇区)。

文件在磁盘的存放

硬盘(磁盘)可以理解为具有一圈一圈磁道的圆盘,数据就是存储在这些磁道上的。数据肯定是有一定大小的,所以会有一个开始存放的位置和结束的位置。普通文件是比较容易理解的。

1.2 目录文件

上文中,我们说在Linux中,目录也是一个文件,叫目录文件。听上去感觉有点奇葩,因为可能在更多人的心目中,目录更像是容器,去容纳和承载文件(普通文件)。但其实稍后做了解释,你可能就会觉得“目录理所当然是文件”。 首先我们来想一下目录的作用:构建一个“树形结构”,一层一层的去存放内容(其他目录、其他文件或程序等)。

那么我们再想一下1.1中对“普通文件”存放方式的描述,就会有一个问题:“普通文件是放在磁盘的磁道上的,我们所谓的目录树形结构,如何在磁道级别体现呢?” 实际上,这种树形结构,并非在磁道级别去实现的,而依然是数据级别。我们假设有下面这张表,表的名字叫Home。

序号 子项名称 子项存储起始扇区位置 子项存储结束扇区位置 1 Desktop 1000 1500 2 Pictures 8000 8500

之后有有表Pictures内容如下

序号 子项名称 子项存储起始扇区位置 子项存储结束扇区位置 1 OIP-1.jpeg 11000 12000 2 OIP-2.jpeg 15000 16000 2 OIP-3.jpeg 18000 19000

用这两个表中的数据,是不是就可以形成一个简单的树形结构?

树形结构

home、Desktop和Pictures这些表,是不是需要保存在文件里?我们将home保存为一个home文件,将Desktop保存为一个Desktop文件,将Pictures保存为一个Pictures文件。这些文件,就是目录文件。所以,目录文件保存的是一种文件之间的层级关系,当然还有其他信息,不再展开。

1.3 设备文件

设备文件是Linux用于对硬件设备进行访问和控制的文件。按照一定的规则向设备文件中写入内容,就可以控制某些设备。从设备文件中读取数据并按照相应规则解析时,就可以读取到设备的输入。 比如键盘文件,我们使用evtest对键盘文件进行读取,当按下键盘按键时,可以读取到相应的信息。需要说明两点:

键盘文件是eventXX,具体是哪个文件,需要根据自己电脑情况尝试; 使用虚拟机时,你需要在虚拟机内敲键盘,才会有数据的读取;在主机进行操作不会有输出。 # 查看键盘事件 sudo evtest /dev/input/event2 键盘文件 二、 目录操作指令 2.1 目录与路径

说到目录,我们经常会用到的几个词是:根目录、主目录、当前目录、上级目录。分别是什么意思呢?

根目录。是系统的最顶级目录,用/表示。

cd / # 切换到根目录 根目录

主目录。主目录又叫用户主目录,我们在系统主界面直接打开shell,其实就是在根目录下。用~表示。主目录的最末级,是自己设置的用户名。

cd ~ # 切换到主目录 主目录

当前目录。是你的shell指令,当前位于什么目录下。可通过shell:和$之间的路径显示判断。用.表示。

当前目录

上级目录。是当前目录的上一级,如上图中,当前目录的上一级为/dev,在上一级为/。用..表示。

cd ../ #切换到上级目录 切换到上级目录

路径,是与目录紧密关联的另一个概念,是指的要到达你的操作对象,需要经历的目录序列;分为绝对路径和相对路径。

绝对路径。是指的从根目录开始,直到你要操作的对象的目录序列。 相对路径。是指的从当前目录开始,直到你要操作的对象的目录序列。 两种路径,各有其适用的情况。 相对路径。当你所操作的文件,位于当前路径的下层,或者位于不远的临近区域,那么适合用相对路径 绝对路径。当你所操作的文件,位于遥远的另一个分支,那么适合用绝对路径 依然以我们上面,键盘文件来举例。我当前位于主目录(~),想去监听键盘文件event2。用什么路径更方便呢?肯定是相对路径。我们需要首先来看一下目录到达event2和主目录的树形结构。 路径

我们当前所在目录为主目录。可以看到,主目录是从根目录开始/->home->ubuntu下来的。而我们要操作的对象,从根目录向下就和我们当前目录分离了,是/->dev->input->event2。如果我们使用相对路径去操作event2,那么将会经历一个非常长的路径:ubuntu->home->/->dev->input->event2。而且其实是无意义的,因为绝对路径就是从根目录(/)开始的。而我们刚才的相对路径里面,其实就包含了从根目录开始,一直到event2的一段。那么绝对路径就是:/->dev->input->event2。

sudo evtest /dev/input/event2 绝对路径

如果我们位于~/Documents下,我们要对~/Pictures里面的图像进行操作。那么,使用相对路径就较为简单:

cd ~/Documents ls -lh ../Pictures/OIP-1.jpeg

需要额外提到的一点是,此处的路径使用的..开头,表示上级目录。在我们上面已经提到。

相对路径

2.2 目录的操作

以下指令[]的是可选内容,是自定义内容

2.2.1 创建目录

指令为:

mkdir [-p]

其中:

mkdir-- make directory,创建目录的意思 -p -- 如果添加,可以一次性创建多级目录 比如: cd mkdir ./mydir #可以创建一个新的名字为mydir的目录 ls 创建单级目录 cd mkdir -p ./mydir2/pic/ #可以创建一个新的名字为 mydir2 的目录, #并在 mydir2 下面,再创建一个 pic 目录 ls && ls ./mydir2 创建多级目录 2.2.2 删除目录

指令为:

rmdir [-p]

示例,删除刚才创建的目录。 rmdir只能删除\color{red}{非空}目录。

rmdir ./mydir # 可以删除 rmdir ./mydir2 # 报错,因为下面还有一个pic目录 单目录删除

加-p 删除。如果删除子目录后,父级目录为空,则把父级目录也会删除。

rmdir -p mydir2/pic # 删除成功,而且mydir2也没了

在这里,使用./mydir2/pic 和 mydir2/pic 是不同的,使用./mydir2/pic ,删除命令会把你当前的目录算作要删除的最顶级目录,会报参数错误。而使用mydir2/pic则会只截至到mydir2

mkdir -p mydir2/pic/ rmdir -p ./mydir2/pic

依然需要一个隐含条件:pic目录下没有东西,如果我们把里面放上东西,比如一张图片。再次尝试

cd && mkdir -p mydir2/pic/ && cp ./Pictures/OIP-1.jpeg ./mydir2/pic/ rmdir -p ./mydir2/pic 非空报错

可以使用如下命令,对文件夹及其内的文件进行删除。\color{red}{慎用}!!

rm -rf mydir2 删除目录及文件 2.2.3 切换目录

切换目录的指令是cd(change directory),切换目录。 参考上述相对路径、绝对路径。 使用pwd(print working directory)指令可以查看当前的路径。

cd pwd 2.2.4 列出目录

使用ls,可以列出当前目录下的内容。前面已经多次使用过。其有几个参数

序号 参数 作用 1 -a 显示所有包含项目,包括隐藏项目 2 -l 以长格式显示文件属性,大小等详细信息 3 -d 仅显示目录的详细信息 4 -R 递归显示出目录及其子目录的内容 5 -S 以文件大小降序排序显示文件 6 -t 以文件最近一次的修改时间排序显示文件

几个之前文档中不常用的指令测试

ls -lhS 根据文件大小排序 ls -lhSa

.bash_history 就是隐藏文件。在上面的命令中,并没有显示出来。但在目前的文件中显示出来了。

显示隐层文件,按照大小排序

ls -lhSR ./Pictures 递归列出 ls -lhSRd */ 列出当前的所有目录 ls -lhSR */ 去掉d后 文件出来了


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有