【问题标题】:Options for Pasting STDOUT to clipboard on a remote host将 STDOUT 粘贴到远程主机上的剪贴板的选项
【发布时间】:2015-10-17 20:56:17
【问题描述】:

我在远程主机上的 .bashrc 中有一个非常简单的脚本别名,我经常通过 SSH 进入该远程主机进行工作。它使我能够输入“pth”作为命令,并且别名为“bash /user/your/home/pathprinter.sh”,如下所示:

#!/bin/bash

NOWDIR=`pwd`
echo 'scp  myname@remote.host.institution.name:'"$NOWDIR" 

这使我能够相当快速地将文件从本地机器 scp 到远程主机,反之亦然,而无需输入太多,因为它会回显输出,然后我单击并拖动以突出显示,然后复制并粘贴到我本地机器上的另一个终端窗口。

如果这个脚本存储在我的本地机器上,我可以这样写:

NOWDIR=`pwd`
echo 'scp  myname@remote.host.institution.name:'"$NOWDIR" | pbcopy

它会直接进入剪贴板。但是,如果我在执行此命令时最常在远程主机上,并且如果我在远程主机上没有 sudo 权限(但是,我仍然可以在主目录或其他地方安装东西),还有办法做到这一点吗?任何东西都可以节省几秒钟!

【问题讨论】:

  • 我认为只有转发X11才有效,然后pbcopy也可以远程运行。我认为没有其他选择(找不到 ANSI 转义码来设置剪贴板)。
  • 谢谢。我会研究 X11 转发。

标签: linux bash ssh pbcopy


【解决方案1】:

脚本可以运行它而不是回显命令,因此您无需复制粘贴任何内容。

你可以有两个脚本,一个从远程复制到本地

#!/bin/bash
remote_path="${1:?Missing remote path}"
local_path="${2:?Missing local path}"
scp "myname@remote.host.institution.name:$remote_path" "$local_path"

另一个从本地复制到远程

#!/bin/bash
local_path="${1:?Missing local path}"
remote_path="${2:?Missing remote path}"
scp "$local_path" "myname@remote.host.institution.name:$remote_path"

您可以将它们执行为

copy-remote-to-local <path copied from the other terminal> .
copy-local-to-remote file.txt <whatever path you want on remote system>

或者,更好的是,configure ssh 为该主机提供一个短名称

Host serv
HostName remote.host.institution.name
User myname

然后你就可以像这样直接使用scp

scp serv:<remote path> <local path>
scp <local path> serv:<remote path>

这样,如果你有公钥登录到那个主机,按下tab就会完成远程路径,就像是本地路径一样!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2012-04-16
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多