我在远程主机上的.bashrc中有一个非常简单的脚本别名,我经常通过它来上班。它使我能够输入“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权限(我仍然可以在主目录或其他地方安装东西),还有办法完成此操作吗?什么东西可以节省几秒钟!
答案 0 :(得分: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
时将完成远程路径,就好像它是本地路径一样!