是否有将软盘映像(例如 .iso 文件)与写入映像的软盘的实际内容(例如 /dev/fd0)进行比较的命令?
假设我有两个文件。第一个有内容:
line 1
foo
line 2
line 1
bar
line 2
Run Code Online (Sandbox Code Playgroud)
第二个在中间插入了一个新部分,所以它看起来像这样:
line 1
foo
line 2
line 1
new text
line 2
line 1
bar
line 2
Run Code Online (Sandbox Code Playgroud)
现在,当我执行“diff -u”时,我得到如下输出:
--- file1 2013-06-25 16:27:43.170231844 -0500
+++ file2 2013-06-25 16:27:59.218757056 -0500
@@ -1,7 +1,11 @@
line 1
foo
line 2
line 1
+new text
+line 2
+
+line 1
bar
line 2
Run Code Online (Sandbox Code Playgroud)
这并没有正确反映插入了中间节——相反,它看起来像是第二节被更改了,并且在末尾添加了一个新节(这是因为算法从第一个不同的行开始)。
有没有办法让 diff(单独使用,或者使用 git diff)来显示这个输出?
--- file1 2013-06-25 16:27:43.170231844 -0500
+++ file2 2013-06-25 16:27:59.218757056 -0500
@@ -1,7 +1,11 @@ …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决的补丁问题的缩小范围:只有两个文件,每个文件的大小为 1 个字节:
a(包含'a')b(包含'b')和目标是制作并应用一个补丁来改变'b'to的值'a'。Makefile 的内容是:
patch:
diff -u b a > b2a.patch
patch -o b.corrected b < b2a.patch
diff a b.corrected
clean:
rm -f b2a.patch b.corrected
Run Code Online (Sandbox Code Playgroud)
鉴于上述情况,make失败并显示以下输出:
$ make
diff -u b a > b2a.patch
make: *** [patch] Error 1
Run Code Online (Sandbox Code Playgroud)
但是,如果我在 bash shell 上一个接一个地执行 Makefile 中的命令,则完全没有问题。
我想检查从备份还原的结果。这是因为 MacOS 上的 TimeMachine 给了我一些奇怪的错误和警告,我想确保在恢复后一切都恢复原状。虽然我不相信 TimeMachine 会放回每个文件,但我相信它会将它恢复的每个文件都放回正确的内容。
我想过 diff -r,但经历大约 300 GiB 可能需要永远。我可以至少比较文件的存在,但在同一次运行中比较大小和日期更好。
我知道像这样的解决方案
diff <(ls -R $PATH1) <(ls -R $PATH2)
Run Code Online (Sandbox Code Playgroud)
但输出难以阅读。我宁愿每个文件只在一侧找到一行。此外,我必须依靠 ls 以相同的顺序在双方的树中进行。这可能不同,因为文件系统可能不同。
我最想得到一个懒惰的工具,它采用两条路径,输出差异达到任何所需的检查水平,也许是 macports 之外的东西。但我不害怕大量的抨击。
我安装了一个基本的 Linux 系统。我想运行一个非常大且复杂的第三方脚本,它将对整个系统的各个部分进行许多更改。这些更改将包括添加新文件、修改现有文件和删除现有文件。脚本完成后,我将有一个修改后的系统。这些修改将是广泛而实质性的。
我想要关于所有已添加、删除或修改的文件的某种报告以及对修改的逐行分析。像文件差异工具的输出这样的东西会很棒。
我假设我需要在运行脚本之前制作某种快照,然后制作第二个快照。我假设然后我会将这些快照提供给某种差异或类似差异的工具。
有谁知道要使用哪些工具以及如何区分整个系统?
我正在使用 Virtualbox,它确实具有差异图像功能,但我不知道我是否可以使其适应此目的。此外,如果可能的话,我更喜欢更通用的解决方案。
这里彻底的意思是“列出所有不同的文件,找出那些同名不同内容的文件,列出不同的内容”。
在我得到一个懒惰的解决方案之前,git init一个目录并将另一个目录复制到其中。然后使用git diff查看差异。
但我想知道还有另一种更聪明的方法来做到这一点吗?于是我提出了这个问题。
我想diff按照这里和我在键入时看到的文档中的描述使用man diff。但是,当我输入时diff,我得到的是:
~ ??? diff
usage: git diff --no-index <path> <path>
Run Code Online (Sandbox Code Playgroud)
同样,当我尝试使用 时 diff,我会收到 git 错误,因为-rq支持man diff但不支持git diff:
~ ??? diff -rq ~/ ~/Desktop
fatal: invalid diff option/value: -rq
Run Code Online (Sandbox Code Playgroud)
我正在使用Prezto和hub,它们都有助于提高 git 生产力,但据我所知,它们都没有创建至少不以开头的别名g。
我已经运行几个剧本像这样,试图发现运作定义的东西diff来git diff,但无济于事。
我如何解决这个问题/找到导致它的原因/覆盖它?
冉type diff:
diff is a shell function
diff is /usr/bin/diff
Run Code Online (Sandbox Code Playgroud) 这是 Unix Shell 程序的一个例子diff,来自版本控制与 Git,由 Loeliger,2ed:
让我们详细看看差异。
在标题中,原始文件用 - - - 表示,新文件用 +++ 表示。
@@ 行为两个文件版本提供行号上下文。
“@@”行中的数字究竟是什么意思?
我只想使用 Diff 来检查文件和目录是否在两个位置存在相同,但不比较文件本身的内容,因为这就是我所需要的,而常规 Diff 只需要太长时间来处理数据量。我该怎么办?是否有其他一些 Debian 标准工具可以实现这一点?