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

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

作者: 石志不渝 | 来源:发表于2023-09-06 22:07 被阅读0次

一、一切皆文件

在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

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


树形结构

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

1.3 设备文件

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

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

二、 目录操作指令

2.1 目录与路径

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

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

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

    cd ~ # 切换到主目录
    
    主目录
  3. 当前目录。是你的shell指令,当前位于什么目录下。可通过shell:$之间的路径显示判断。用.表示。

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

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

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

  1. 绝对路径。是指的从根目录开始,直到你要操作的对象的目录序列。
  2. 相对路径。是指的从当前目录开始,直到你要操作的对象的目录序列。
    两种路径,各有其适用的情况。
  3. 相对路径。当你所操作的文件,位于当前路径的下层,或者位于不远的临近区域,那么适合用相对路径
  4. 绝对路径。当你所操作的文件,位于遥远的另一个分支,那么适合用绝对路径
    依然以我们上面,键盘文件来举例。我当前位于主目录(~),想去监听键盘文件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] <目录名>

其中:

  1. mkdir-- make directory,创建目录的意思
  2. -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/picmydir2/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 <path>
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后 文件出来了

相关文章

  • Linux学习第二天

    Linux操作系统命令行介绍 一、Linux目录结构及目录路径 Linux的文件系统采用分层结构。其顶层为根目录,...

  • Linux命令

    Linux 操作命令 文件路径操作从当前目录开始 文件路径操作从更目录上一级目录 文件权限 读,写,执行分别用r,...

  • Linux命令行

    文件和目录操作 复制文件目录 移动文件目录 重命名文件目录 删除文件目录 创建文件目录 查看文件内容 查看文件类型...

  • Linux命令简记

    关于Linux命令简记 0x01 文件和目录操作 pwd 显示工作目录路径 cd 更改目录 ls 列出子目录和文件...

  • 系统编程-------目录操作

    目录操作 linux 下一切皆文件 1、创建目录 使用mkdr创建目录 参数: pathname 待创建目录路径...

  • Linux文件操作

    文件操作 (Linux文件操作)) [文件|目录] Linux文件操作:为了对文件和目录进程处理,你需要用到系统...

  • 系统加固之Linux安全加固

    Linux系统基本操作 文件结构图及关键文件功能介绍 Linux文件结构 Linux文件结构图 二级目录 | 目录...

  • 第三节 实验报告

    第四节 实验报告 实验名称:Linux 目录结构及文件基本操作 实验内容: 1 Linux 的文件组织目录结构 2...

  • 无标题文章

    第四节 实验报告 实验名称:Linux 目录结构及文件基本操作 实验内容: 1 Linux 的文件组织目录结构 2...

  • Linux基础入门实验报告三

    一.实验名称 Linux目录结构及文件基本操作 二.实验过程 1.Linux目录结构 (1).定义 Linux是以...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/bqklvdtx.html