跨服务器比较文件

ico*_*ast 3 shell bash scp sftp zsh

曾几何时,我记得做过大致类似这样的事情:

vimdiff <(scp://some_server/home/user/.zshrc) <(scp://some_server-qa/home/user/.zshrc)
Run Code Online (Sandbox Code Playgroud)

(其中some_serversome_server-qa是在我的~/.ssh/config用户和密钥等中定义的,因此不必将其包含在 shell 中)。

问题是我无法弄清楚需要什么语法才能完成这项工作,并且我无法通过谷歌搜索找到任何内容。我确信这里有人知道我错过了什么。我缺少什么?

Sté*_*las 7

vim确实支持使用某些 URL 打开远程文件,因此您可以执行以下操作:

vimdiff scp://some_server{,-qa}/home/user/.zshrc
Run Code Online (Sandbox Code Playgroud)

输入文档:h scp内的内容。vim

如果在构建时尚未启用该支持,您始终可以这样做:

vimdiff -R <(ssh some_server cat /home/user/.zshrc) \
           <(ssh some_server-qa cat /home/user/.zshrc)
Run Code Online (Sandbox Code Playgroud)

尽管您将无法修改远程文件。

-R是为了vim提醒您编辑这些文件是没有意义的(尽管您总是可以这样做::w !ssh host 'cat > file'将编辑后的文件发回(或者只是:w !ssh host '>file'如果您的登录 shellhost也恰好在默认情况zsh下))。$NULLCMDcat