linux下的文件比对工具,Linux - 文件比对工具

通常一个软件包的不同版本之间,比较配置文件与原始档的差异时,经常用到一些文件比对的工具。这里就讲一下diff和cmp。

1. 以行为单位对比的diff

由于是以行为比对的单位,因此diff常常是用在同一文件(或软件)的新旧版本差异上。

工作模式:diff [-bBi] file1 file2

选项与参数

-- file1 :作为原始比对文件的文档名

-- file2 :作为目的比对文件的文档名

注意,file1 或 file2可以被-取代(-代表 Standrd input 之意)

-- b:忽略一行当中,仅有空格数目的差异

-- B :忽略空白行的差异

-- i :忽略大小写的不同

diff的应用实例:

这里首先需要创造出file1 (hello.c) 和 file2 (hello.new):

(1)hello.c文件

1e462d91844b

hello.c

(2)hello.new文件

通过指令cat hello.c | sed -e '2d' -e '5c no fifth line' > hello.new(翻译成人话:将hello.c的第2行删掉,第5行改成'no fifth line'输出到hello.new文件)

需要注意⚠️:sed后面如果要接超过两个以上的动作时,每个动作前面都要加e才行

1e462d91844b

hello.new

(3)使用diff来比较

diff hello.c hello.new

1e462d91844b

比较hello.c 和 hello.new的差异

解释一下diff处理后输出数据的含义:

2d1 ## file1的第2行被删除;基准是file2的第1行

< main() ## 列出了file1被删除那行的内容

5c4 ## file1的第5行被取代成file2的第4行

< } ## file1第5行内容

---

> no fifth line ##file2第4行内容

2.利用字节单位对比的cmp

cmp主要也是在比对两个文件,但它主要利用 字节单位 去比对。

工作模式:cmp [-l] file1 file2

-- 选项与参数

-l :将所有的不同点的字节处都列出来(cmp预设仅会输出第一个发现的不同点)

1e462d91844b

cmp hello.c hello.new

不同点太多,cmp -l hello.c hello.new只截取部分

1e462d91844b

cmp -l hello.c hello.new

3.利用patch进行文件升级

patch这个指令与diff有密不可分的关系。我们前面提到,diff可以用来分辨两个版本之间的差异,举例来说,hello.c 及 hello.new 之间就是两个不同版本。如何将旧的文件升级为新的文件?

我们可以通过diff先比较新旧版本的差异,将差异文档制作成补丁文档,再由补丁文档更新旧文件即可~(还是拿hello.c和hello.new测试)

3.1 制作补丁文档

指令行中输入 diff -Naur hello.c hello.new > hello.patch

运行后我们可以获得补丁文档hello.patch

1e462d91844b

补丁文档 hello.patch

工作原理:新文件看到-会删除,看到+会加入

3.2 使用patch更新文本

更新模式 patch -pN < patch_file

还原模式 patch -R -pN < patch_file

-p:后面可以接“取消几层目录”(eg:新旧文本在同一目录用p0)

-R:代表还原,将新的文件还原成原来旧的版本

我们要更新hello.c,便在指令行中输入 patch -p0 < hello.patch,随即便获得了更新后的hello.c。此时再对比一下hello.c 和 hello.new,会发现两者一摸一样。

倘若我要恢复hello.c为旧版本呢?

patch -R -p0 < hello.patch 就可以了

4.文件打印准备 pr

还记得,我们平时使用windows打印文本时,可以同时选择与设定每一页打印时的标头和页码吗?事实上,我们在linux底下打印纯文本文档其实也是可以加入标题和页码的。

直接 pr filename就可以,pr的参数很多,以后用到了再详细列出来吧~

~~~今天的文章就到此为止~~~

~~ 明天还会来哦~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu系统中有几个常用的文件比对工具可供选择,其中一个是DiffMerge。DiffMerge是一个跨平台的GUI文本比对工具,支持Linux、Windows和macOS三大平台。它具有图示化显示两个文件之间的改变和三个文件之间的改变的功能,并且支持文件比对、集成文件浏览器和高度可配置。你可以从官方网站上下载DiffMerge的安装文件,并按照指南进行安装。安装完成后,你可以在命令行中运行diffmerge命令来使用它。另外,还有类似于Windows的beyondcompare工具和meld工具也可以在Ubuntu系统中使用。你可以通过在命令行中输入相应的命令来使用它们。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ubuntu 下文件/文件夹 比较工具 DiffMerge](https://blog.csdn.net/wozaizheli8666/article/details/124750192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ubuntu中非常好用的文件比较工具meld](https://blog.csdn.net/whunamikey/article/details/80928591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ubuntu 下比较文件工具 bcompare](https://download.csdn.net/download/qq_39257814/87246543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值