vimdiff比较输出而不是文件


15

我正在尝试比较两个命令输出(无文件)

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

我尝试过使用重定向,管道,vim - -c但是我必须缺少一些东西。有人可以帮忙吗?

Answers:


23

你是混淆$(…)<(…)。您使用了前者,后者将输出作为参数传递给vimdiff。例如,如果/path/to/foo包含的最后一行包含bar bar bar,则以下命令

echo $(tail -1 /path/to/foo)

相当于

echo bar bar bar

相反,您需要使用<(…)。这称为进程替换,并将输出作为伪文件传递给vimdiff命令。因此,使用以下内容。

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

这在bash和zsh中有效,但是显然在tcsh中没有办法进行进程替换。


不过,这只是猛击
-simona

@simona也适用于zsh。可能还有csh和tcsh。
Sparhawk '18

@Sparhawk它在tcsh中不起作用
西蒙娜

@simona感谢您提供的信息;我对tcsh不熟悉。您可能会考虑提出一个适用于tsch的答案。干杯。
Sparhawk '18

@Sparhawk显然没有办法 tcsh不创建一个文件unix.stackexchange.com/questions/5111/...
西蒙娜
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.