【问题标题】:iTerm2: quick download over SSH using CMD+clickiTerm2:使用 CMD+单击通过 SSH 快速下载
【发布时间】:2017-04-17 14:26:54
【问题描述】:

iTerm2 允许您单击链接(CMD+单击)并快速打开它。但是,在通过 SSH 工作时,这不起作用。是否可以启用此功能,以便我可以 CMD+单击文件,它会自动下载到我本地机器上的文件夹中?

谢谢!

【问题讨论】:

    标签: ssh shortcuts iterm2 iterm


    【解决方案1】:

    这实际上可以通过安装 Shell 集成来实现。请注意,Shell 集成将需要安装在您要通过 ssh 连接到的任何服务器上,而不仅仅是在您的本地计算机上。来自this link

    iTerm 最近推出了一项名为 Shell 集成的功能。使用此功能,我们可以方便地直接从 iTerm 2 上传和下载文件。按 Option 键时将文件拖到窗口中,将文件上传到远程 ssh 连接。使用 ls 命令右键单击文件将弹出一个包含下载文件的上下文列表。

    1. ssh 进入远程服务器时点击“iTerm2->Install Shell Integration”。
    2. 确保服务器具有正确的 FQDN 作为主机名,并且可以通过该主机名进行连接。 (可以使用hostname -f查看)
    3. 如果您使用私钥身份验证,那么您的 .ssh 目录中应该有 id_rsa。但是,您还应该将 id_rsa.pub 放在您的 .ssh 目录中以使用此功能。

    很抱歉回答迟了,但我只是想做同样的事情并遇到了你的问题。以为找到解决方案后我会发布我的发现。

    【讨论】:

      【解决方案2】:

      我在 iTerm2 中使用 ⌘+Clicking to download via SCP 并没有取得多大成功,因为我在~/.ssh/config 中有一套涉及跳转主机的复杂规则。

      但我找到了一个优雅的解决方法:一个 shell 函数,它写入 STDOUT 以触发 iTerm2 捕获输出并将其保存为文件!

      我保留以下 sn-p (Toolbelt → Snippets) 来定义命令download:

      alias download="bash <(base64 -d <<<'IyEvYmluL2Jhc2gKaWYgWyAkIyAtbmUgMSBdOyB0aGVuCiAgZWNobyAiVXNhZ2U6IGRvd25sb2Fk
      LnNoIGZpbGUgLi4uIgogIGV4aXQgMQpmaQpmb3IgZm4gaW4gIiRAIgpkbwogIGlmIFsgLXIgIiRm
      biIgXSA7IHRoZW4KICAgIHByaW50ZiAnXDAzM10xMzM3O0ZpbGU9bmFtZT0nYGVjaG8gLW4gIiRm
      biIgfCBiYXNlNjRgIjsiCiAgICB3YyAtYyAiJGZuIiB8IGF3ayAne3ByaW50ZiAic2l6ZT0lZCIs
      JDF9JwogICAgcHJpbnRmICI6IgogICAgYmFzZTY0IDwgIiRmbiIKICAgIHByaW50ZiAnXGEnCiAg
      ZWxzZQogICAgZWNobyBGaWxlICRmbiBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUu
      CiAgZmkKZG9uZQo=')"
      

      base64 编码的字符串解码为:

      #!/bin/bash
      if [ $# -ne 1 ]; then
        echo "Usage: download.sh file ..."
        exit 1
      fi
      for fn in "$@"
      do
        if [ -r "$fn" ] ; then
          printf '\033]1337;File=name='`echo -n "$fn" | base64`";"
          wc -c "$fn" | awk '{printf "size=%d",$1}'
          printf ":"
          base64 < "$fn"
          printf '\a'
        else
          echo File $fn does not exist or is not readable.
        fi
      done
      

      哪个依赖iTerm2's download protocol

      显示来自 iTerm2 的通知的示例会话:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多