将文本从一个终端复制到另一个终端

将文本从一个终端复制到另一个终端

我从我的家用电脑上通过 ssh 登录到大学帐户。然后我找到一个要复制到本地系统上的文件。因此,我打开一个新的 shell 终端,并将用于scp将该文件复制到我的系统上。但是我进入的系统上的文件路径ssh很长,因此我用鼠标选择它,然后用鼠标将其粘贴到另一个本地连接的终端中。

我想做的是:将 的输出输入pwd到一个对所有终端都可见的临时变量中,即使我是在ssh'ed 终端下创建的,或者是我想不到的其他方式。

答案1

做到这一点的方法是使用普通文件或命名管道。

scp为什么不首先在原始终端中执行(即使在后台)?

如果主机系统使用,则proc在第二个终端中执行操作(其中 PID 是您感兴趣的 cwd/pwd 中的 shell 的 PID)。cd -P /proc/PID/cwdscp.

答案2

如果您的终端支持 zmodem 协议(KDE 的 Konsole 支持),并且远程系统安装了 lrzsz 软件包,您可以使用以下命令通过终端触发直接传输:

sz foo.txt

Konsole 会提示您保存文件,仅此而已。 GNU screen 显然也支持 zmodem。

答案3

如果您启用了 X 转发(ssh -XForwardX11in~/.ssh/config或任何其他方法),您可以从 shell 操作 X 选择:

printf %s "$PWD" | xsel -i

根据您的终端仿真器,您可能需要设置 CLIPBOARD ( xsel -bi) 而不是 PRIMARY 选择 ( xsel -p)。您还可以使用“次要”选择 ( xsel -si)。

您可以使用鼠标中键粘贴 PRIMARY 选择,或者(在某些终端中)使用Ctrl+粘贴 CLIPBOARD V,或者您可以在另一侧的 shell 中使用xsel(或xsel -s或)。xsel -b

还有其他可能的工作流程,例如涉及反向 ssh 连接、~转义或泽斯什。看SSH轻松将文件复制到本地系统,通过活动的 SSH 会话下载文件。您还可以挂载远程文件系统sshfs

答案4

如果您的家用计算机上运行 ssh 服务器,您可以执行相反的操作scp

[student@university ~/rather/long/path/to/interesting/file]$ scp ./secrect.txt [email protected]:~

相关内容