我想查看不在本地文件系统中而是在网络上的 2 个文件的差异。所以,我认为如果必须使用diff
,curl
以及某种管道。
就像是
curl http://to.my/file/one.js http://to.my/file.two.js | diff
但它不起作用。
我想查看不在本地文件系统中而是在网络上的 2 个文件的差异。所以,我认为如果必须使用diff
,curl
以及某种管道。
就像是
curl http://to.my/file/one.js http://to.my/file.two.js | diff
但它不起作用。
UNIX 工具diff
可以比较两个文件。如果您使用该<()
表达式,您可以在间接指令中比较命令的输出:
diff <(curl file1) <(curl file2)
所以在你的情况下,你可以说:
diff <(curl -s http://to.my/file/one.js) <(curl -s http://to.my/file.two.js)
到达此页面的某些人可能正在寻找逐行差异而不是代码差异。如果是这样,并且使用 coreutils,您可以使用:
comm -23 <(curl http://to.my/file/one.js | sort) \
<(curl http://to.my/file.two.js | sort)
获取第一个文件中不在第二个文件中的行。您可以使用comm -13
在第二个文件中获取不在第一个文件中的行。
如果您不限于 coreutils,您还可以使用sd (stream diff),它不需要排序也不需要处理替换并支持无限流,如下所示:
curl http://to.my/file/one.js | sd 'curl http://to.my/file.two.js'
它支持无限流的事实允许一些有趣的用例:您可以在循环内使用 curl while(true)
(假设页面只为您提供“新”结果),并且sd
将在指定时间后超时流没有新的流线。
这是我写的一篇关于在终端上区分流的博文,其中介绍了sd
.