【Linux】【命令】diff

diff

  • Descriptions
  • Arguments
  • Examples
    • 直接使用diff命令
    • -u 输出格式
    • -c 输出格式
    • 并列输出
    • -s 和 -q
  • 脚本示例
    • 示例1:目录及文件差异


Descriptions


diff命令用于对比两个文件或者两个文件夹的不同之处,求基本语法如下所示:

diff [OPTION]... FILES

Compare FILES line by line.【逐行对比】

FILES 可以有四种情况:① FILE1 FILE2;② DIR1 DIR2;③ DIR FILE…;④ FILE… DIR


Arguments


一些常用的参数下表所示。

参数作用
b忽略所有空白字符的差别,包括制表符和空格
B忽略空白行
u统一格式输出,这种格式提供了一种更连续、更易读的显示方式
c上下文格式输出,类似于 -u,但显示的上下文行数更多
iignore-case,不检查大小写的不同
r比较子目录中的文件
y以并列的方式显示文件的异同之处
w在使用 -y 参数时,指定栏宽
N在比较目录时,如果文件在另一个文件中不存在,则认为文件内容为空
q只报告文件是否相同,不显示具体的差异
s如果文件相同则报告,否则以普通格式输出不同之处

Examples


用于测试的原始文件

在这里插入图片描述


直接使用diff命令


只显示不同之处。

在这里插入图片描述

在这里,红色方框中的内容表示的是两个文件中不同之处所在的行号。例如,16c14 指的是第一个文件的 16 行和第二个文件的14行不同。

< 后面的是第一个文件(左边)中的内容,>对应的是第二个(右边)文件中的内容。

两个文件的 4,5 行是相同的,在这里就没有显示出来。


-u 输出格式


不同之处分别显示,并使用 + 和 - 标识不同的文件内容,相同之处则只显示一次。

在这里插入图片描述


-c 输出格式


显示两个文件中的所有内容,不同之处用 ! 标记。

在这里插入图片描述


并列输出


在这里插入图片描述

在这里插入图片描述

| 表示两个文件的不同之处,< 表示后面文件比前面文件少了1行内容,> 表示后面文件比前面文件多了一行内容


-s 和 -q


(test2 和 test 相同,test_1 和 test 不相同。)

在这里插入图片描述


脚本示例


基于 diff 命令的一些脚本。


示例1:目录及文件差异


场景:团队中的 A 和 B 分别在自己的分支上开发新功能。当他们准备将各自的分支合并到主分支时,遇到了一些合并冲突。项目管理者要求他们提交各自分支与主分支的差异报告,以便进行代码审查和冲突解决。

任务:① 使用diff命令对比Alice和Bob的分支与主分支之间的所有文件差异;② 输出的报告应该包括哪些文件被修改、新增或删除,以及具体修改的内容;③ 生成的报告应该易于阅读,以便团队成员可以快速地识别关键信息。

实现

#!/bin/bash# Define work directory
main_branch_dir="/path/to/main/branch"
feaure_branch_dir="/path/to/user/branch"
diff_report="diff_report.rpt"# clear
>$diff_report# Compare Directory
echo "Generating diff report between feature branch and main branch..." >> $diff_report
diff -urN $main_branch_dir $feaure_branch_dir >> $diff_report# Report Difference
if[ $? -eq 0 ];then
echo "No differences found." >> $diff_report
else
echo "Differences found. See report below for details." >> $diff_report
fiecho "Diff report generated at: $diff_report"

说明

  1. > 或者 >> 是将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)。

    > 是覆盖,>> 是追加。

    所以 >$diff_report 将一个空的内容以覆盖的方式写道一个文件中,就相当是于清空该文件。【有待确认,自己在命令行试了一项,会报错】

  2. $?是上一条命令的返回值,或者说是命令的返回状态,0表示没有错误,其他任何值表明有错误。

  3. 使用>>的时候,echo命令指定的内容不会显示在 Terminal。所以这个脚本还可以优化,如果有差异,在 Termial 给出 rpt 的位置,如果没有差异,其实只显示结果就可以了。

  4. 如果只是想查看不同,vimdiff 其实更加方便,显示效果更好。但是 diff 可以用于脚本的编写。

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

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

相关文章

信号与噪声分析——第一节-确定信号的分析

目录 1.确定信号的分析 1.1确定信号的分类&#xff1a; 1.周期信号与非周期信号&#xff1a; 周期信号的定义&#xff1a; 性质&#xff1a; 2.能量信号与功率信号&#xff1a; 定义 区别&#xff1a; 3.基带信号与频带信号&#xff1a; 基带信号的定义&#xff1a; …

使用Matplotlib绘制箱线图:详细指南与示例

在数据分析和可视化领域&#xff0c;箱线图&#xff08;Box Plot&#xff09;是一种强大的工具&#xff0c;用于展示数据的分布特征&#xff0c;包括中位数、四分位数、异常值等。本文将详细介绍如何使用Matplotlib库在Python中绘制箱线图&#xff0c;并通过一个实际的血压数据…

基于微信小程序二手物品调剂系统设计与实现

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图文章目录 前言 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 二手物品调剂系统是一种在线平台&#xff0c;旨在促进用户之间的二手物品交易。该系统提供了一个…

数智合同 | 业财一体与履约联动的数字化转型

随着信息化技术的发展&#xff0c;合同数智化管理为应对合同管理挑战提供了新机遇。企业需要深入思考数智化手段在合同管理中的应用&#xff0c;以提高合同管理水平&#xff0c;应对新形势下的市场竞争挑战与合规要求&#xff0c;实现企业的高质量发展。 2024年5月&#xff0c;…

数据中心母线槽测温监控装置的优势和如何选型

在当今数字化高速发展的时代&#xff0c;数据中心成为了信息存储与处理的核心枢纽。而确保数据中心的稳定运行&#xff0c;对于企业和社会来说至关重要。其中&#xff0c;母线作为数据中心电力传输的关键环节&#xff0c;其正常运行直接关系到整个数据中心的可靠性。为了保障数…

2024新手攻略:项目管理工具+PMP备考经验不容错过!

&#xff08;一&#xff09;热门工具大盘点 禅道是一款专注于软件开发项目管理的工具。它涵盖了项目管理的各个环节&#xff0c;包括需求管理、任务分配、缺陷跟踪等。禅道的优势在于其对软件开发流程的深入理解和支持&#xff0c;能够帮助开发团队更好地管理项目进度和质量。…

免费的国标设备端模拟器,支持自定义编程,批量模拟大量国标GB28181设备

GB/T 28181是中国国家公共安全视频监控联网系统&#xff08;简称“国标GB28181”&#xff09;的一套标准&#xff0c;主要用于规范视频监控系统的互联互通。这套标准的实施旨在推动不同厂家设备之间的互操作性&#xff0c;促进视频监控市场的健康发展。本软件是针对GB28181标准…

算法01----移动零(C++)

题目展示 算法原理 我们这里要用到的算法是双指针移动&#xff0c;和我们之前学的快排的核心思想是一样的。我们看看怎么做吧。我会以图片的形式将我的思路告知大家。 这就是整个题目的整体思想算法&#xff0c;大家理解一下&#xff0c;其实这道题目还是很简单的。 代码编写…

02篇 机械考研复试简历保姆级教程,考研简历联系导师邮件复试调剂超全攻略 导师喜欢看到的简历(附模板)

考研复试简历怎么写&#xff1f;导师喜欢看到的简历&#xff08;附模板&#xff09; 复试简历&#xff0c;重要程度max&#xff01;绝非小事一桩&#xff01;它就像是你硬核经历的闪亮外衣&#xff0c;条理清晰、逻辑严谨且设计感十足&#xff0c;一定能在导师心中留下深刻印象…

基于neo4j知识图谱的菜谱推荐系统

&#x1f374; AI菜谱推荐系统让你“煮”事半功倍&#xff01; &#x1f374; 找不到做饭灵感的时候&#xff0c;是不是总觉得“今天吃啥”这道选择题简直是终极挑战&#xff1f;别急&#xff0c;我们基于Neo4j知识图谱的菜谱推荐系统&#xff0c;正是为了解决你的困扰而设计&a…

空洞卷积:Atrous/Dilated convolution - 语义分割中多用到

没办法&#xff0c;我还是很多基础的、底层的模块不通透&#xff0c;读论文难免会受到阻碍&#xff0c;而且这现在科研任务很急了&#xff0c;必须要马上动手实验&#xff0c;全给我弄明白、特别是算法&#xff01; 空洞卷积-可变形卷积-这一个个我都要。 空洞卷积据说在语义分…

【完-网络安全】Windows防火墙及出入站规则

文章目录 防火墙入站和出站的区别域网络、专用网络、公用网络的区别 防火墙 防火墙默认状态一般是出站允许&#xff0c;入站阻止。 入站和出站的区别 入站就是别人来访问我们的主机&#xff0c;也就是正向shell的操作 出站就是反向shell&#xff0c;主机需要主动连接kali&am…

智能指针(3)

目录 可能问题五&#xff1a; 问题分析&#xff1a; 答案格式&#xff1a; shared_ptr的模拟实现 部分1&#xff1a;引用计数的设计(分考点1) 代码实现&#xff1a; 部分2&#xff1a;作为类所必须的部分(分考点2) 代码实现&#xff1a; 部分3&#xff1a;拷贝构造函数…

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了&#xff0c;感兴趣的小伙伴可以看一下。 深色模式&#xff1a;​ 浅色模式&#xff1a; ​这里主要使用了以下三个包&#xff1a; MahApps.Metro&#xff1a;UI库&#xff0c;提供菜单导航和其它控件​​​​​​​ 实现步骤&#xff1a;1、使用B…

【JavaEE】——自定义协议方案、UDP协议

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;自定义协议 1&#xff1a;自定义协议 &#xff08;1&#xff09;交互哪些信息 &…

RuoYi-Vue若依 环境搭建 速成

一、若依简介 RuoYi-Vue 是一个开源的后台管理系统&#xff0c;适用于快速开发企业级应用。该平台由两部分组成&#xff1a;前端和后端。 &#xff08;1&#xff09;技术框架 前端技术&#xff1a; Vue.js: 前端框架使用 Vue.js&#xff0c;这是一种流行的JavaScript框架&a…

Python爬虫实战:抓取指定网站数据

一、前言 在互联网时代&#xff0c;数据的价值日益凸显。爬虫技术作为一种获取数据的重要手段&#xff0c;广泛应用于各种场景。本文将通过一个实例&#xff0c;介绍如何使用Python进行网站数据的抓取。 二、环境准备 Python 3.xrequests库BeautifulSoup库 三、代码实现 i…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第五篇-着色器投影-投射阴影部分】

投射阴影 最初打算将投影内容放在上一篇中&#xff0c;因为实现非常快速简单&#xff0c;没必要单独成篇。不过因为这里面涉及一些问题&#xff0c;我觉得还是单独作为一篇讲一下比较好。 原理 这里要用到的是 Shadow Pass Switch ,它可以为非不透明的材质替换阴影 某些版本…

Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法)

Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法) requests-pkcs12 PyPI python中如何使用requests模块下载文件并获取进度提示 1、GET方法 1.1、调用 # 下载客户端(GET)def download_client_get(self, header_all):try:url = self.host + "/xxx/v1/xxx-mod…

【MySQL】索引的机制、使用

在学习索引知识之前&#xff0c;我们可以先了解一下什么是索引。实际上&#xff0c;索引就是数据库中一个或多个列存储的结构&#xff0c;能够支持数据库管理系统在不扫描整张表的情况下也能查询到数据行&#xff0c;能够大大提升查询效率。举个例子&#xff0c;我们想要找到一…