3.4_Linux-浏览文件系统

1.Linux 文件系统

如果你刚接触Linux系统,可能就很难弄清楚Linux如何引用文件和目录,对已经习惯Microsoft Windows操作系统方式的人来说更是如此。在继续探索Linux系统之前,先了解一下它的布局是有好处的。

你将注意到的第一个不同点是,Linux在路径名中不使用驱动器盘符。在Windows中,PC上安装的物理驱动器决定了文件的路径名。Windows会为每个物理磁盘驱动器分配一个盘符,每个驱动器都会有自己的目录结构,以便访问存储其中的文件。

举个例子,在Windows中经常看到这样的文件路径:

c:\Users\Rich\Documents\test.doc

这种Windows文件路径表明了文件test.doc究竟位于哪个磁盘分区中。如果你将test.doc保存在闪存上,该闪存由J来标识,那么文件的路径就是J:\test.doc。该路径表明文件位于J盘的根目录下。
Linux则采用了一种不同的方式。Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。
Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出,这点跟Windows类似。

你将会发现Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在Linux中,反斜线用来标识转义字符,要是用在文件路径中的话会导致各种各样的问题。如果你之前用的是Windows环境,就需要一点时间来适应。

在Linux中,你会看到下面这种路径:

/home/Rich/Documents/test.doc

这表明文件test.doc位于Documents目录,Documents又位于rich目录中,rich则在home目录中。要注意的是,路径本身并没有提供任何有关文件究竟存放在哪个物理磁盘上的信息。
Linux虚拟目录中比较复杂的部分是它如何协调管理各个存储设备。在Linux PC上安装的第一块硬盘称为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。
Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点(mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中。

通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中,如图3-2所示。
在这里插入图片描述
图3-2展示了计算机中的两块硬盘。一块硬盘和虚拟目录的根目录(由正斜线/表示)关联起来。剩下的硬盘就可以挂载到虚拟目录结构中的任何地方。在这个例子中,第二块硬盘被挂载到了/home位置,用户目录都位于这个位置。
Linux文件系统结构是从Unix文件结构演进过来的。在Linux文件系统中,通用的目录名用于表示一些常见的功能。表3-3列出了一些较常见的Linux顶层虚拟目录名及其内容。
在这里插入图片描述

在登录系统并获得一个shell CLI提示符后,会话将从主目录开始。主目录是分配给用户账户的一个特有目录。用户账户在创建之后,系统通常会为其分配一个特有的目录(参见第7章)。可以使用图形界面在虚拟目录中跳转。要想在CLI提示符下切换虚拟目录,需要使用cd命令。

2.遍历目录

在Linux文件系统上,可以使用切换目录命令cd将shell会话切换到另一个目录。cd命令的格式非常简单:

cd destination

cd命令可接受单个参数destination,用以指定想切换到的目录名。如果没有为cd命令指定目标路径,它将切换到用户主目录。
destination参数可以用两种方式表示:一种是使用绝对文件路径,另一种是使用相对文件路径。

接下来将分别阐述这两种方法。这两者之间的不同对于理解文件系统遍历非常重要。

1.绝对文件路径

用户可在虚拟目录中采用绝对文件路径引用目录名。绝对文件路径定义了在虚拟目录结构中该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。
绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件系统的根目录。因此,如果要指向usr目录所包含的bin目录下的用户二进制文件,可以使用如下绝对文件路径:

/usr/bin

使用绝对文件路径可以清晰表明用户想切换到的确切位置。要用绝对文件路径来切换到文件系统中的某个特定位置,只需在cd命令后指定全路径名:

christine@server01:~$ cd /usr/bin
christine@server01:/usr/bin$

注意,在上面的例子中,提示符中一开始有一个波浪号(~)。在切换到另一个目录之后,这个波浪号被/usr/bin替代了。CLI提示符正是用它来帮助你跟踪当前所在虚拟目录结构中的位置。波浪号表明shell会话位于你的主目录中。在切换出主目录之后,如果提示符已经进行了相关配置的话,绝对文件路径就会显示在提示符中。

如果你的shell CLI提示符中并没有显示shell会话的当前位置,那是因为它并没有进行相关的配置。

如果没有配置好提示符来显示当前shell会话的绝对文件路径,也可以使用shell命令来显示所处的位置。pwd命令可以显示出shell会话的当前目录,这个目录被称为当前工作目录。pwd命令的用法如下:

christine@server01:/usr/bin$ pwd
/usr/bin
christine@server01:/usr/bin$

在切换到新的当前工作目录时使用pwd命令,是很好的习惯。因为很多shell命令都是在当前工作目录中操作的,在发出命令之前,你应该始终确保自己处在正确的目录之中。

可以使用绝对文件路径切换到Linux虚拟目录结构中的任何一级:

christine@server01:/usr/bin$ cd /var/log
christine@server01:/var/log$
christine@server01:/var/log$ pwd
/var/log
christine@server01:/var/log$

还可以从Linux虚拟目录中的任何一级跳回主目录:

christine@server01:/var/log$ cd
christine@server01:~$
christine@server01:~$ pwd
/home/christine
christine@server01:~$

但是,如果你只是在自己的主目录中工作,经常使用绝对文件路径的话未免太过冗长。
例如,若已经位于目录/home/christine,再输入下面这样的命令切换到Documents目录就有些繁琐了:

cd /home/christine/Documents

幸好还有一种简单的解决方法。

2.相对文件路径

相对文件路径允许用户指定一个基于当前位置的目标文件路径。相对文件路径不以代表根目录的正斜线(/)开头,而是以目录名(如果用户准备切换到当前工作目录下的一个目录)或是一个特殊字符开始。假如你位于home目录中,并希望切换到Documents子目录,那你可以使用cd命令加上一个相对文件路径:

christine@server01:~$ pwd
/home/christine
christine@server01:~$
christine@server01:~$ cd Documents
christine@server01:~/Documents$ pwd
/home/christine/Documents
christine@server01:~/Documents$

上面的例子并没有使用正斜线( / ),而是采用了相对文件路径将当前工作目录从/home/christine改为/home/christine/Documents,大大减少了输入内容。
另外,此例中还要注意的是,如果提示符经过配置可以显示出当前工作目录,它就会一直显示波浪号。这表明当前工作目录位于用户home目录之下。

如果你刚接触命令行和Linux目录结构,建议暂时先坚持使用绝对文件路径。等熟悉了目录布局之后,再使用相对文件路径。

可以在任何包含子目录的目录中使用带有相对文件路径的cd命令。也可以使用一个特殊字符来表示相对目录位置。
有两个特殊字符可用于相对文件路径中:
 单点符(.),表示当前目录;
 双点符(…),表示当前目录的父目录。

你可以使用单点符,不过对cd命令来说,这没有什么意义。后面你会看到另一个命令如何有效地在相对文件路径中使用单点符。
双点符在目录层级中移动时非常便利。如果你处在在主目录下的Documents目录中,需要切换到主目录下的Downloads目录,可以这么做:

christine@server01:~/Documents$ pwd
/home/christine/Documents
christine@server01:~/Documents$ cd ../Downloads
christine@server01:~/Downloads$ pwd
/home/christine/Downloads

双点符先将用户带到上一级目录,也就是用户的主目录,然后/Downloads这部分再将用户带到下一级目录,即Downloads目录。必要时用户也可用多个双点符来向上切换目录。假如现在位于主目录中(/home/christine),想切换到/etc目录,可以输入如下命令:

christine@server01:~$ cd ../../etc
christine@server01:/etc$ pwd
/etc
christine@server01:/etc$

当然,在上面这种情况下,采用相对路径其实比采用绝对路径输入的字符更多,用绝对路径的话,用户只需输入/etc。因此,只在必要的时候才使用相对文件路径。

在shell CLI提示符中加入足够的信息非常方便。不过出于清晰性的考虑,在余下的例子里,我们只使用一个简单的$提示符。

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

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

相关文章

玻色量子“天工量子大脑”亮相中关村论坛,大放异彩

2023年5月25日至30日,2023中关村论坛(科博会)在北京盛大召开。中关村论坛(科博会)是面向全球科技创新交流合作的国家级平台行业盛会,由科技部、国家发展改革委、工业和信息化部、国务院国资委、中国科学院、…

Bug记录

那些年写过的很小的bug: Bug1: if args.model IRNN or irnn:# some code这实际上不会按你期望的方式工作。原因在于 ‘irnn’ 是一个非空的字符串,因此它在布尔上下文中被视为 True。所以条件总是为真,而不会考虑 args.model 的…

C/C++快速求素数【细节满满】

个人主页:仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏:数论_仍有未知等待探索的博客-CSDN博客 目录 一、暴力求解 1、求1-n之间的素数(O(n^2)) 1.思路 2.代码 2、判断某个数x是否为素数 1.思路 2.代码 …

0基础学习PyFlink——使用datagen生成流式数据

大纲 可控参数字段级规则生成方式数值控制时间戳控制 表级规则生成速度生成总量 结构生成环境定义行结构定义表信息 案例随机Int型顺序Int型随机型Int数组带时间戳的多列数据 完整代码参考资料 在研究Flink的水位线(WaterMark)技术之前,我们可…

数据结构——顺序表(SeqList)

目录 1. 顺序表介绍 2. 顺序表工程 2.1 顺序表定义 2.1.1 静态顺序表 2.1.2 动态顺序表 2.2顺序表接口 2.2.1 顺序表初始化 2.2.2 顺序表打印 2.2.3 顺序表销毁 2.2.4 顺序表数据插入 2.2.4.1 容量检查 2.2.4.2 顺序表尾插 2.2.4.3 顺序表头插 2.2.4.4 顺序表随机…

git关联远程仓库自己分支自用

初始化仓库 cassielDESKTOP-KPKFOEU MINGW64 /d/code/api_test_202310232022 (tong) $ git init Reinitialized existing Git repository in D:/code/api_test_202310232022/.git/关联远程仓库并创建本地分支 cassielDESKTOP-KPKFOEU MINGW64 /d/code/api_test_202310232022 …

jQuery知识点(小白总结)

1. 选择器:jQuery提供了多种选择器用于选择指定的元素,可以根据元素的ID、class、标签名、属性来选择元素。 2. 事件处理:jQuery拥有众多的事件处理函数,可以方便的绑定、解除事件,如click、hover、keyup等。 3. DOM…

人工智能与卫星:颠覆性技术融合开启太空新时代

人工智能与卫星:颠覆性技术融合开启太空新时代 摘要:本文将探讨人工智能与卫星技术的融合,并介绍其应用、发展和挑战。通过深入了解这一领域的前沿动态,我们将展望一个由智能卫星驱动的未来太空时代。 一、引言 近年来&#xf…

lazada商品评论API接口(评论内容|日期|买家昵称|追评内容|评论图片|评论视频..)

Lazada商品评论API接口是Lazada开放平台提供的一种API接口,可以帮助开发者获取Lazada平台上的商品评论数据。 通过该接口,开发者可以获取到用户对商品的评论信息,包括评论内容、评价等级、评论时间等,从而了解用户对商品的反馈和…

微信小程序overflow-x超出部分样式不渲染

把display:flex改成display:inline-flex, 将对象作为内联块级弹性伸缩盒显示, 类似与是子元素将父元素撑开,样式就显示出来了

智信SMS客户端操作手册

登录系统 登录前需查看用户协议输入账号和密码,点击登录即可 首页介绍 登录成功之后,进入操作页面。 操作页面包括:设置、导入手机号、发送短信三大块功能。 如图: 导入手机号 点击首页中的导入按钮,即可导入手机…

微服务框架SpringcloudAlibaba+Nacos集成RabbitMQ

目前公司使用jeepluscloud版本,这个版本没有集成消息队列,这里记录一下,集成的过程;这个框架跟ruoyi的那个微服务版本结构一模一样,所以也可以快速上手。 1.项目结构图: 配置类的东西做成一个公共的模块 …

Spring- SpringBean生命周期源码解析

附带资料JFR介绍:深度探索JFR - JFR详细介绍与生产问题定位落地 - 1. JFR说明与启动配置 - 知乎 Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到…

点云从入门到精通技术详解100篇-基于三维点云的路况语义分割

目录 前言 国内外研究现状 基于传统方法的点云语义分割 基于深度学习方法的点云语义分割

医疗数据可视化大屏:重构医疗决策的未来

医疗行业一直是信息密集型领域之一,它的复杂性不仅在于患者病历和医疗数据的海量积累,还包括了病情诊断、医疗资源分配、病患治疗等多层次的挑战。随着信息技术的不断发展,医疗数据可视化大屏成为了一种创新性的工具,它为医疗管理…

TypeScript深度剖析:TypeScript 中枚举类型应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景 一、是什么 枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说,枚举就是一个对象的所有可能取值的集…

阿里云推出AI编程工具“通义灵码“;生成式 AI 入门教程 2

🦉 AI新闻 🚀 阿里云推出AI编程工具"通义灵码",支持多种语言及实时续写功能 摘要:阿里云推出了一款名为"通义灵码"的AI编程工具,支持多种主流编程语言,包括Java、Python、Go等。该工…

java spring boot 注解、接口和问题解决方法(持续更新)

注解 RestController 是SpringMVC框架中的一个注解,它结合了Controller和ResponseBody两个注解的功能,用于标记一个类或者方法,表示该类或方法用于处理HTTP请求,并将响应的结果直接返回给客户端,而不需要进行视图渲染…

IDEA 设置代码注释模板

功能简介: 每次看别人代码时,面对毫无注释的类,除了头大还是头大, 以下提供了一种代码类注释模板 新建java类的时候,自动增加类注释,养成代码开发好习惯 效果展示: 代码模板: #if (…

css——半圆实心

案例 代码 <view class"circleBox"></view>.circleBox {width: 50px;height: 100px;background: red;border-radius: 100px 0 0 100px; }