vimdiff 比较输出而不是文件

Flo*_*abé 19 vim stdout stdin vimdiff

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

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"
Run Code Online (Sandbox Code Playgroud)

我尝试玩重定向,管道,vim - -c但我一定错过了一些东西。有人可以帮忙吗?

Spa*_*awk 27

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

echo $(tail -1 /path/to/foo)
Run Code Online (Sandbox Code Playgroud)

相当于

echo bar bar bar
Run Code Online (Sandbox Code Playgroud)

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

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)
Run Code Online (Sandbox Code Playgroud)

这在bashand 中有效zsh,但显然没有办法tcsh.