我从我的家用电脑上通过 ssh 登录到大学帐户。然后我找到一个要复制到本地系统上的文件。因此,我打开一个新的 shell 终端,并将用于scp
将该文件复制到我的系统上。但是我进入的系统上的文件路径ssh
很长,因此我用鼠标选择它,然后用鼠标将其粘贴到另一个本地连接的终端中。
我想做的是:将 的输出输入pwd
到一个对所有终端都可见的临时变量中,即使我是在ssh
'ed 终端下创建的,或者是我想不到的其他方式。
答案1
做到这一点的方法是使用普通文件或命名管道。
scp
为什么不首先在原始终端中执行(即使在后台)?
如果主机系统使用,则proc
在第二个终端中执行操作(其中 PID 是您感兴趣的 cwd/pwd 中的 shell 的 PID)。cd -P /proc/PID/cwd
scp
.
答案2
如果您的终端支持 zmodem 协议(KDE 的 Konsole 支持),并且远程系统安装了 lrzsz 软件包,您可以使用以下命令通过终端触发直接传输:
sz foo.txt
Konsole 会提示您保存文件,仅此而已。 GNU screen 显然也支持 zmodem。
答案3
如果您启用了 X 转发(ssh -X
、ForwardX11
in~/.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]:~