当前位置: 首页 > news >正文

Linux diff命令(比较两个文件或目录的内容差异)

文章目录

  • Linux `diff` 命令详解教程
    • 基本用法
      • 比较文件
      • 输出解释
    • 递归比较(-r)
      • 示例代码
    • 控制输出格式
      • 统一格式(-u)
      • 上下文格式(-c)
    • 高级选项
      • 忽略所有空白差异(-w)
      • 仅报告文件是否不同

Linux diff 命令详解教程

diff 是一个在 Unix 和 Linux 系统中广泛使用的命令行工具,用于比较两个文件或目录的内容差异。本文将深入探讨 diff 命令的各种用法,包括基本比较、递归比较、输出格式控制等高级功能。

基本用法

比较文件

diff 命令最基本的用法是比较两个文件,命令格式如下:

diff [options] file1 file2

示例代码,比较两个文本文件 text1.txttext2.txt 的内容:

diff text1.txt text2.txt

在这里插入图片描述
在这里插入图片描述

如果没有任何输出,表明这两个文件在内容上是相同的。如果文件有差异,diff 会显示这些差异的具体行和内容。

输出解释

当发现两个文件不相同时,diff 输出的格式通常如下:

3c3
< one
---
> two

这表示 file1 的第三行是 “one”,而 file2 的第三行是 “two”。这里 < 符号表示第一个文件的内容,> 符号表示第二个文件的内容。

上面3c3是一种指示符,用于描述发生变化的行号和变化类型。这个特定的输出格式来自于传统的diff输出模式,这里是如何解释的:

  • 3c3 中的第一个数字 3 表示在第一个文件(通常是比较中的左侧文件)中涉及变更的起始行号。
  • c 是一个字母,表示变更的类型。在这里,c 表示 “change”(更改)。diff 使用不同的字母来表示不同类型的差异:
    • c 表示更改(change)。
    • a 表示添加(addition)。
    • d 表示删除(deletion)。
  • 第二个 3 表示在第二个文件(通常是比较中的右侧文件)中涉及变更的起始行号。

因此,3c3 告诉用户在两个文件的第三行发生了变化。

递归比较(-r)

当需要比较包含多个文件和目录的两个目录时,可以使用 -r 选项。这使 diff 能够递归地比较每个文件。

示例代码

比较两个目录 dir1dir2

diff -r dir1 dir2

在这里插入图片描述

这将输出这两个目录中所有不同的文件和子目录的差异。

控制输出格式

diff 命令提供多种输出格式,可以更清晰地理解文件之间的差异。

统一格式(-u)

使用 -u 选项可以生成易于理解和适合用于补丁的输出格式:

diff -u file1 file2

在这里插入图片描述

输出示例:

--- file1    2021-06-07 12:00:00.000000000 +0200
+++ file2    2021-06-07 12:01:00.000000000 +0200
@@ -1,5 +1,5 @@This is a file
-with
+asmallexampletext.

这里 @@ -1,5 +1,5 @@ 表明比较的是从第一行开始的共五行代码。- 表示 file1 的内容,+ 表示 file2 的内容。

上下文格式(-c)

上下文格式通过 -c 选项提供,它包含了更多周围的上下文信息,帮助理解变更的前后关系:

diff -c file1 file2

输出示例:

*** file1    2021-06-07 12:00:00.000000000 +0200
--- file2    2021-06-07 12:01:00.000000000 +0200
***************
*** 1,5 ****This is a file
- withasmallexample
--- 1,5 ----This is a file
+ asmallexample

高级选项

diff 还提供了一系列高级选项,用于忽略空白差异、只显示差异而不显示具体内容等。

忽略所有空白差异(-w)

使用 -w 选项可以忽略空格和制表符带来的差异:

diff -w file1 file2

仅报告文件是否不同

使用 -q 选项可以简洁地报告文件是否不同,而不显示具体差异:

diff -q dir1 dir2

输出示例:


plaintext
Files dir1/file1 and dir2/file1 differ

通过这些方法,可以有效地使用 diff 命令来识别和处理文件及目录间的差异,无论是进行代码审核、生成补丁文件还是简单的文件比较。

http://www.lryc.cn/news/345248.html

相关文章:

  • 从传统到现代:水表的远程抄表革命
  • 视频怎么打水印?6个软件教你快速进行视频水印制作
  • 面试 Java 基础八股文十问十答第二十八期
  • Excel-VBA报错01-解决方法
  • php利用阿里云短信SDK实现短信发送功能
  • 承装(修、试)电力工程施工许可证四级资质可以承接多大的项目?
  • 影像图层调整图像显示效果的色彩参数汇总
  • EasyHPC - PyTorch入门教程【笔记】
  • Node.js里面 Path 模块的介绍和使用
  • 【Linux】Centos7配置JDK
  • pytorch中统计一个数在tensor中出现了几次
  • a-auto-complete 请求后端数据做模糊查询,解决下拉框选择选不上,不回显的问题
  • Leetcode—724. 寻找数组的中心下标【简单】
  • C语言 | Leetcode C语言题解之第72题编辑距离
  • AI视频教程下载:零代码创建AI智能体、AI Agents和ChatGPT的Gpts
  • 汽车之家,如何在“以旧换新”浪潮中大展拳脚?
  • 图神经网络(GNNs)在时间序列分析中的应用
  • Qt QShortcut快捷键类详解
  • 003 redis分布式锁 jedis分布式锁 Redisson分布式锁 分段锁
  • Jackson工具,java对象和json字符串之间的互相转换
  • 【设计模式】之装饰器模式
  • leetcode_46.全排列
  • 【牛客】[HNOI2003]激光炸弹
  • Docker与Harbor:构建企业级私有Docker镜像仓库
  • 推荐几个傻瓜式短视频去水印在线网站
  • 大模型LLM之SFT微调总结
  • 【RocketMQ问题总结-2】
  • 掌握Android Fragment开发之魂:Fragment的深度解析(上)
  • 深度解读DreamFusion:一站式AI解决方案
  • JVM-02