Linux关于文件的高级命令

tree命令

tree命令用于以树状图的形式显示目录结构。它可以帮助用户快速了解目录和文件的层次关系,非常适合用于浏览和理解大型文件系统的结构。

基础用法

显示当前目录的树状结构:tree

显示指定目录的树状结构:tree 指定目录路径

tree命令用于以树状图的形式显示目录结构。它可以帮助用户快速了解目录和文件的层次关系,非常适合用于浏览和理解大型文件系统的结构。

常用选项

  • -L <level>:限制显示的层级数。例如,tree -L 2将只显示当前目录及其直接子目录的内容,而不会递归显示更深层次的目录。

  • -a:显示所有文件和目录,包括隐藏文件(以.开头的文件)。

  • -d:只显示目录,不显示文件。

  • -f:输出完整路径信息。

安装tree命令方法

如果你的Linux系统上没有预安装tree命令,你可以通过包管理器来安装它。

使用apt-get(Debian/Ubuntu)

sudo apt-get update  //执行 sudo apt-get update 会更新本地存储的软件包列表,这些列表告诉系统可用的软件包及其版本。这个操作是为了确保你可以获取到最新的软件包信息,但并不会安装或更新已安装的软件包。

sudo apt-get install tree  //用于安装名为 tree 的软件包的命令

使用yum(Red Hat/CentOS)

sudo yum install tree

本文命令预览

diff命令(找文件或者文件夹之间差异)

diff命令来找到两个文件或者两个文件夹之间的差异(本质上就是找文件夹内部的所有文件的差异)并且生成补丁,然后使用patch命令来打补丁,是一对好基友。

diff -u a.txt b.txt

diff命令中我们通常会加上-u选项一起使用,-u 参数告诉 diff 命令以 Unified Diff 格式来输出结果。Unified Diff 是一种常见的文本文件比较格式,通常用于显示文件内容的变化,尤其是在软件开发中常用于显示代码文件的修改。Unified Diff 格式的典型示例如下:

--- original.txt
+++ modified.txt
@@ -1,4 +1,4 @@
-Hello, world!
+Hello, OpenAI!This is a sample file.
-It is used for demonstrating diffs.
+It is used for demonstrating unified diffs.

这种格式以一种可读性强和易于理解的方式显示两个文本文件之间的差异,具体包括以下几个重要部分:

  1. 文件信息行:以- - -开头的行表示原文件的文件名及路径,以+++开头的行表示修改后的文件的文件名及路径。原文件通常是指在命令中列在前面的文件,也就是我们示例中的a.txt。

  2. 上下文行:以 @@ 开头的行表示变更的位置,包括变更前后的行号信息。 @@ -1,4 +1,4 @@ 表示从原文件的第1行起,连续4行,对应到修改后文件的第1行起,连续4行。

  3. 变更行:以 +- (空格)开头的行表示添加、删除和未变更的内容行。比如这里:

-Hello, world!

+Hello, OpenAI!

  This is a sample file.

表示的是原文件——>新文件,删除了原文件中的Hello, world! 在新文件中添加了Hello, OpenAI!

This is a sample file. 这一行前面是个空格不是+或-,说明这一行没有变

具体示例

详细过程:可以看到是原文件的第1-7行变到了新文件的1-8行,源文件hello world1这行删除,然后增加一行hello,alice这行保留,tom这行删除,增加一行wuhu再增加一行wuhuhuhu2,nanjing这一行保留,what can i say这一行删除,空行保留,emmm行删除,增加一行int main(void),增加一行空行。

我们对照着diff的结果可以清晰的看出来原文件到新文件的过程。具体来说diff呈现的结果是原文件中的每一行到底是保留还是删除,还是在行后新增内容,呈现了文件变化整个过程。

diff命令中的常用选项

命令: diff  -r  test1 test2

比较两个文件夹的差异。递归地比较test1  和test2 目录(包括子目录)中的所有文件,并列出它们之间的差异。

命令: diff -i  test8.text test8-2.text

忽略大小写当比较两个文件。这对于只有大小写不同的文本非常有用。

命令: diff -B  test8.text test8-2.text

忽略空白行比较文件的差异。

命令: diff -b  test8.text test8-2.text

忽略空格或制表符的差异。

命令: diff -s  test8.text test8-2.text

若两个没有任何差异,仍然显示信息。下面举的例子是文件夹,但是没关系,-s用法一样

diff命令来比较两个文件夹的差异

首先我在这里创建了两个文件目录分别为v_1.0 和 v_2.0,我们可以清晰看到他们的结构。

 现在我们来使用命令:diff v_1.0/ v_2.0/ -ruNB

可以看到这里对文件夹使用diff的话,相当于对里面的所有文件进行了diff

现在来解释一下命令中选项的作用 -ruNB,主要是介绍一下-N,其他的上面都有过说明。

-N:当文件不存在时视为空文件处理。(但不会创建空文件的

当指定的文件在某一个版本中不存在但在另一个版本中存在时,-N 选项会将缺失的文件视为空文件。这对于比较新增加的文件特别有用。

比如这里面v_2.0相对于v_1.0新加了一个realme2.txt文件,在用diff比较的时候加上了-N选项的话就可以认为v_1.0中也有这个文件存在,只不过文件为空。所以这里也显示了两个文件目录下realm2.txt的差别。

如果这里不加-N的话显现不出来这个文件具体差别,效果如下

生成补丁文件

只需要将刚刚diff的结果保存在文件中就可以,这里我们使用了重定向,顺便复习一下(重定向的目标文件和vim后面加的文件如果不存在时,系统会自动帮助我们创建)。

patch使用补丁文件

原文件+补丁文件=新文件

原文件夹+补丁文件=新文件夹

提前声明,这里对于给文件夹打补丁的时候,我使用的是进入目标文件夹内部然后打补丁的方法,在文件夹外面也许也可以,但是进入目标文件夹内部执行 patch 命令更符合直觉,也更容易理解和维护,不容易出错。

1.首先使用diff v_1.0/ v_2.0/ -ruNB > v1_2.patch 来生成补丁文件:v1_2.patch

2.然后我们cd v_1.0/,到达文件夹内部

3.使用patch -p1 < ../v1_2.patch

这里要着重解释一下第三点,

1. ../是因为补丁文件和v_1.0/文件夹位于同一层,现在我们所处在文件夹内部,../才能正确索引到补丁文件,当然你也可以用绝对路径

2. -p 选项在 patch 命令中的作用是告诉它如何处理补丁文件中的路径信息。这里-p1是去除补丁文件中的第一级前置目录分量,可以在下图看出来补丁文件中都有着路径

我们使用补丁文件时站在补丁文件角度来和目标文件进行匹配,现在我们的目标文件就是文件夹内部的众多文件和文件夹(因为我们已经cd到了文件夹内部),所以第一级的v_1.0/应该舍弃掉(当然不是真的改变补丁文件中各个路径而是在补丁过程忽略第一级目录),所以这里要加-p1

操作展示

patch反向使用补丁文件

如果你已经成功地使用 patch 命令将 v1_2.patch 中的补丁应用到 v_1.0/ 文件夹中的文件上,现在需要撤销或反向这些更改,可以使用 patch 命令的 -R 选项。这个选项告诉 patch 命令要反向应用补丁,即将已经应用的补丁还原。

具体操作如下:

  1. 进入目标文件夹:首先,进入已经打过补丁的目标文件夹,即 v_1.0/

    cd v_1.0/
  2. 反向应用补丁:使用 -R 选项反向应用之前使用的补丁文件 v1_2.patch

    patch -p1 -R < ../v1_2.patch

这条命令会尝试将 v1_2.patch 中的修改撤销,恢复到之前的状态。请确保在目标文件夹中执行这个命令,以便路径匹配正确。

lsblk命令(列出系统中所有的块设备信息)

块设备是指以块(block)为单位进行数据存取的设备,比如硬盘、固态硬盘(SSD)、U盘等。它们以块为最小单位进行数据读写操作。

lsblk命令用于列出系统中所有的块设备信息,包括硬盘驱动器(如固态硬盘、机械硬盘)、U盘、光盘驱动器以及它们的挂载点信息。具体来说,lsblk命令可以列出每个块设备的以下信息:

  1. 设备名称:块设备的名称,例如 /dev/sda
  2. MAJ:MIN:设备的主设备号和次设备号。
  3. RM:如果设备是可移动设备(如U盘),则显示为 1;如果不可移动(如硬盘),则显示为 0
  4. 大小:设备的容量大小。
  5. 类型:设备的类型,如磁盘、分区、软盘等。
  6. 挂载点:如果设备已经被挂载,则显示挂载点的路径。
  7. 标签:设备的标签或者名称。
  8. 模型:设备的型号信息。

lsblk不仅限于已挂载的设备,它会显示所有在系统中识别到的块设备。

使用lsblk命令可以快速了解系统中存在的块设备及其关联信息,这对于管理和调试存储设备特别有用。

fdisk命令(查看,管理磁盘分区)

fdisk是一个用于磁盘分区管理的命令。

显示磁盘分区表信息:fdisk -l

它的主要作用是用来创建、编辑、查看和删除磁盘分区,通常用于管理硬盘、SSD等块设备的分区表。

具体来说,fdisk可以用来完成以下任务:

  1. 创建新的分区:可以使用fdisk来创建新的分区,选择分区类型(如主分区、扩展分区等)以及分配分区的起始位置和大小。

  2. 查看分区表:可以查看当前系统中所有磁盘的分区表信息,包括每个分区的起始位置、大小、类型等。

  3. 编辑分区表:可以编辑现有的分区表,包括修改分区的大小、类型或删除分区。

  4. 写入和保存分区表:完成对分区表的修改后,可以将更改写入磁盘以保存新的分区配置。

  5. 检查分区和磁盘信息:提供了一些命令选项,可以用来检查磁盘和分区的详细信息,如显示磁盘的几何结构和分区的文件系统类型。

尽管fdisk是一个强大的工具,但在使用它之前应谨慎操作,因为不正确的分区操作可能导致数据丢失。通常情况下,操作系统提供了更高级的工具或者文件系统抽象层来管理分区,如partedGParted等,这些工具提供了更直观和安全的分区管理界面。

df命令(查看当前已挂载的文件系统)

df命令是用于显示文件系统的磁盘空间使用情况的工具。其名称来自于"disk free"的缩写,它能够列出每个挂载的文件系统及其使用情况的统计信息。

  1. 文件系统名称:显示每个挂载点对应的文件系统设备或者特殊文件(如/dev/sda1)。

  2. 总空间:显示文件系统的总容量,即分区的总大小。

  3. 已使用空间:显示文件系统当前已经被使用的空间量。

  4. 剩余空间:显示文件系统中还剩余的可用空间量。

  5. 使用率:以百分比形式显示已使用空间占总空间的比例。

  6. 挂载点:显示挂载的路径

对于物理设备和文件系统的辨析

  1. 物理设备:例如USB闪存驱动器(通常是 /dev/sdb)是指存储设备本身,它是一个物理硬件实体。这些设备通常可以分区,并且每个分区可以包含一个文件系统。

  2. 文件系统:是指在物理设备的一个或多个分区上创建的逻辑结构,用于在操作系统中组织和管理数据。文件系统包括FAT、NTFS、ext4等,每种文件系统都有其自己的格式和规则。

当你将一个USB闪存驱动器插入计算机时,它会被识别为一个物理设备,如 /dev/sdb。然后,你可以在该设备上创建一个或多个分区(例如 /dev/sdb1),并在这些分区上格式化并安装一个文件系统,如FAT32或NTFS。这样,每个分区就对应一个具体的文件系统。

所以,一个物理设备(如USB闪存驱动器)通常可以包含一个或多个文件系统(每个文件系统位于一个分区上)。lsblk命令显示的是物理设备,而df命令则显示的是当前已挂载的文件系统的使用情况。要查看分区的详细信息可以用命令fdisk(需要sudo才能看)

mount命令

mount命令用于挂载文件系统到指定的挂载点(mount point)。在Linux和类Unix系统中,文件系统通常以设备文件(如硬盘分区、光盘、USB驱动器等)的形式存在,而挂载则是将这些设备文件的内容映射到操作系统的文件系统树中的特定位置,使其可以被访问和使用。

具体来说,mount命令允许用户将一个文件系统(通常是外部设备或者网络上的共享文件系统)与文件系统树中的一个目录进行关联,使得该文件系统的内容可以通过这个目录进行访问。例如,将一个USB闪存驱动器挂载到系统中的/mnt/usb目录,就可以通过/mnt/usb来访问和操作该USB设备上的文件。

sudo mount /dev/sdb1 /mnt/data
这个命令将 /dev/sdb1 设备挂载到 /mnt/data 目录。需要管理员权限 (sudo) 才能执行挂载操作。

挂载文件系统时,有几个重要的注意事项需要考虑,以确保操作安全和有效:

  1. 目标挂载点的存在性

    • 挂载点必须是存在的且为空目录如果不为空,原有内容将被挂载的文件系统覆盖),否则挂载可能失败或导致数据丢失。
  2. 选择合适的挂载选项

    • 挂载选项(如读写权限、同步异步模式、文件系统类型等)应该根据具体需求进行选择。例如,如果需要在挂载点写入数据,则需要确保挂载选项包含写入权限。
  3. 文件系统类型的匹配

    • 挂载的文件系统类型必须与实际的文件系统类型匹配,否则可能导致无法正确读写数据或者文件系统损坏。
  4. 避免挂载重复

    • 确保不会重复挂载同一个设备或同一个文件系统到不同的挂载点,这可能会导致文件系统的并发访问问题或数据不一致性。

umount命令

umount命令用于卸载(取消挂载)已经挂载的文件系统(包括硬盘、分区、光盘等)。umount命令后面通常跟挂载点的路径。挂载点的路径可以通过df命令看到。

sudo umount /mnt/data
这个命令会卸载 /mnt/data 目录下已经挂载的文件系统。需要管理员权限 (sudo) 才能执行卸载操作。

注意:卸载文件系统的时候要我们需要确认文件系统是否在使用中。

在执行卸载操作之前,确保没有任何进程或程序在访问或使用被卸载的文件系统。如果文件系统正在被使用,则将会卸载不成功,强行卸载(加上了-f选项)可能会导致数据丢失或文件系统损坏。

卸载文件系统后,情况通常如下:

  1. df 命令df命令用于显示文件系统的磁盘空间利用情况。当你使用umount命令成功卸载一个文件系统后,使用df命令将不再显示该文件系统的挂载信息,因为它已经不再是系统的一部分。

  2. lsblk 命令lsblk命令用于列出块设备的信息,包括已挂载和未挂载的设备。即使一个文件系统已经被umount卸载,lsblk仍然能够显示它作为一个设备的存在,因为它显示的是物理设备和其分区的信息,而不是已经挂载的文件系统列表。

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

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

相关文章

基于FreeRTOS+STM32CubeMX+LCD1602+AD5621(SPI接口)的DAC控制输出Proteus仿真

一、仿真原理图: 二、运行效果: 三、STM32CubeMX配置: 1)、GPIO配置: 2)、freertos配置: 四、软件部分: 1)、main主函数: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file …

模拟5亿年自然进化史,全新蛋白质大模型ESM3诞生!前Meta老将力作LeCun转赞

模拟5亿年自然进化史&#xff0c;全新蛋白质大模型ESM3诞生&#xff01;前Meta老将力作LeCun转赞。 能抗衡AlphaFold 3的生命科学大模型终于出现了。初创公司Evolutionary Scale AI发布了他们最新的98B参数蛋白质语言模型ESM3。不仅支持序列、结构、功能的all-to-all推理&#…

【动态规划】动态规划一

动态规划一 1.第 N 个泰波那契数2.面试题 08.01. 三步问题3.使用最小花费爬楼梯4.解码方法 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.…

[k8s生产系列]:k8s集群故障恢复,etcd数据不一致,kubernetes集群异常

文章目录 摘要1 背景说明2 故障排查2.1 查询docker与kubelet状态2.2 查看kubelet服务日志2.3 重启docker与kubelet服务2.3.1 首先kubelet启动起来了&#xff0c;但是报错master节点找不到2.3.2 查询kubernetes集群服务&#xff0c;发现etcd与kube-apiserver均启动异常 2.4 etcd…

【Pyhton】读取寄存器数据到MySQL数据库

目录 步骤 modsim32软件配置 Navicat for MySQL 代码实现 步骤 安装必要的库&#xff1a;确保安装了pymodbus和pymysql。 配置Modbus连接&#xff1a;设置Modbus从站的IP地址、端口&#xff08;对于TCP&#xff09;或串行通信参数&#xff08;对于RTU&#xff09;。 连接M…

公用对象池

什么是对象池&#xff1f; 对象池顾名思义就是存放对象的池子&#xff0c;主要是为了重复利用对象。将不用的对象扔进池子里&#xff0c;需要用的时候再从池子中取出来。这样的一套机制我们称为对象池。 为什么用对象池&#xff1f; 其实从定义我们就可以看出来&#xff0c;…

算法金 | 我最常用的两个数据可视化软件,强烈推荐

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 预警&#xff1a;今天文章的描述可能会让你有点别扭&#xff1b;如感到不适&#xff0c;请及时停止 在我行…

MacOS 安装 mtr 网络检测工具

Install sudo brew install mtr sudo chown root $(which mtr) sudo chmod us $(which mtr) sudo chown root $(which mtr-packet) sudo chmod us $(which mtr-packet) Test mtr google.com

C# WPF 3D 数据孪生 系列六

数字孪生应用开发 应用开发中的布局需求 Grid基本使用 WPF 3D绘图 点云 系列五-CSDN博客 WPF UI 3D 多轴 机械臂 stl 模型UI交互-CSDN博客 WPF UI 3D 基本概念 点线三角面 相机对象 材质对象与贴图 3D地球 光源 变形处理 动作交互 辅助交互插件 系列三-CSDN博客 数字孪生 介…

015-GeoGebra基础篇-定点旋转物体、动态显示数值并显示运动轨迹

这可能是我能想到的最大概率可以被你搜索到的标题了&#xff0c;容我先喘口气~ 目录 一、成品展示二、涉及内容三、做图步骤&#xff08;1&#xff09;绘制三角形t&#xff08;2&#xff09;建立定点D&#xff08;3&#xff09;制作角度滑动条&#xff08;4&#xff09;图形绕点…

嵌入式Linux系统编程 — 6.7 实时信号

目录 1 什么是实时信号 2 sigqueue函数 3 sigpending()函数 1 什么是实时信号 等待信号集只是一个掩码&#xff0c;它并不追踪信号的发生次数。这意味着&#xff0c;如果相同的信号在被阻塞的状态下多次产生&#xff0c;它只会在信号集中被记录一次&#xff0c;并且在信号集…

Windows 下用MSYS2 环境为RP2040 编译MicroPython 固件

就是想试试看MSYS2 能兼容到什么地步。自己做了个RP2040 板子&#xff0c;用了4MB 的Flash&#xff0c;默认的Micropython 固件是2MB 的&#xff0c;所以只能自己编译固件。 编译环境 MSYS2 的安装方法、基本配置什么的我就不管了&#xff0c;到处都有文章介绍这个。只提一点…

mac视频压缩简单办法,mac如何把视频压缩到指定大小内存

在数字时代&#xff0c;视频已成为我们日常生活和工作的重要交流工具。然而&#xff0c;视频文件体积庞大&#xff0c;给存储和分享带来了不少困扰。本文将为你揭秘视频压缩的秘密&#xff0c;让你轻松减小视频文件体积&#xff0c;提升分享效率&#xff01; 方法一下载文件压缩…

Vue3实现过渡动画

认识动画 在开发中&#xff0c;我们想要给一个组件的显示和消失添加某种过渡动画&#xff0c;可以很好的增加用户体验&#xff1a; React框架本身并没有提供任何动画相关的API&#xff0c;所以在React中使用过渡动画我们需要使用一个第三方库 react-transition-group&#xf…

【高中数学/极值问题】一条长为L的绳子,一面靠墙,另外三边组成矩形,问此矩形最大面积能是多少?

【问题】 一条长为L的绳子&#xff0c;一面靠墙&#xff0c;另外三边组成矩形&#xff0c;问此矩形最大面积能是多少&#xff1f; 【示意图】 【解析式】 设垂直于墙的两边长为x&#xff0c;则墙对边长为L-2x&#xff0c;围成的矩形面积Sx(L-2x) 写成标准的解析式为yx(L-2…

本地Windows电脑 连接 Windows 服务器

Windows电脑 连接 Windows 服务器 方式1&#xff1a;直接搜索 在电脑的搜索栏&#xff0c;输入“远程桌面连接” 可以选择点击 “打开” 或者直接按 回车键 “Enter”&#xff0c;打开 远程桌面连接 方式2&#xff1a;运行框打开服务器连接 同时按&#xff1a;Windows徽标键…

java+springboot+Mysql“友书”综合书籍平台系统24489-计算机毕业设计项目选题推荐(附源码)

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;“友书”综合书籍平台当然也不能排除在外。“友书”综合书籍平台系统是以实际运用为开发背景&#xff0c;运用软件工程原…

搜维尔科技:详谈ART的工具追踪技术

您的生产流程中是否已经受益于刀具跟踪系统&#xff1f;您是否意识到它们的价值&#xff1f;因为它们可以优化您的装配顺序&#xff0c;从而节省您的时间和金钱。 目前我们提供两种工具跟踪解决方案&#xff1a; 1.ART与 VERPOSE的解决方案——易于使用的图像识别 安装在工…

UE5 05-利用 timeline 插值运动

理解成 unity Dotween DoMove 插值运动即可 AddTimeLine 节点 物体插值运动 物体插值缩放 一个timeline 可以K多个动画帧

基于STM32F103C8T6的同步电机驱动-CubeMX配置与IQmath调用

基于STM32F103C8T6的同步电机驱动-CubeMX配置与IQmath调用 一、功能描述: 上位机通过CAN总线实现对电机的运动控制,主要包含三种模式:位置模式、速度模式以及力矩模式。驱动器硬件核心为STM32F103C8T6,带相电压采集电路以及母线电压采集电路。其中供电电压12V。 PWM中心对…