如何将远程命令的输出复制到本地剪贴板?

cwd*_*cwd 6 linux ssh clipboard display iterm

iTerm2在 Mac OS X 中用作我的终端客户端。在本地系统上,我可以使用pbcopypbpaste在系统剪贴板和终端之间传输数据,但是当您通过 ssh 连接到另一台机器时,这当然不起作用。

有什么方法可以获取命令的结果并将其自动复制到剪贴板?也许是一个applescript来抓取iTerm窗口上的文本,然后获取最后一行的下一行?

例如,如果我想复制当前工作目录:

图片48.png

我运行pwd,然后使用鼠标选择文本,然后按command + c

有没有更好/更快/自动的方法来做到这一点?我不是在寻找适用于每个命令的防弹解决方案(例如:当有一个巨大的回滚时可能不起作用) - 我只是在寻找一些东西来使我经常做的这项任务不那么乏味。

更新

我正在考虑使用它screen来执行此操作,但我仍然不确定是否可行。

Spi*_*iff 3

嗯,我刚刚尝试过这个,它有效:

echo "foo" | tee | ssh YourUsername@your.ssh.client.host pbcopy
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我使用它echo "foo"作为您想要将其输出复制到客户端计算机的命令的替代ssh
  • 我使用它是tee为了让您可以在终端窗口中直接看到它,而不是让它全部被命令吞没ssh
  • 通过发出ssh运行命令,它会将收到的命令发送stdinssh另一台主机上的该命令,然后立即返回。

您可能可以将其别名为更易于键入的名称。请务必使用ssh密钥而不是基于密码的身份验证,以避免重新输入密码。更新:您可以使用SSH 代理转发,这样您就不必在远程机器上输入凭据来访问本地计算机。

(注意:当你只有 ssh/tty/shell 会话而没有 Mac OS X GUI 上下文时,我不确定 pbcopy/pbpaste 的工作效果如何。我认为粘贴板是 NeXTStep/Cocoa/Aqua/GUI 概念,不一定存在于 Unix 层而没有 GUI 层的东西。)

当我第一次想到这个时,它看起来很黑客,但我玩得越多,我就越喜欢它。