我有两个带有 的终端窗口bash
。一个位于client
计算机上,另一个在 上有 SSH 会话server
。在 上server
,我位于一个目录中,看到一个文件,我想client
使用 scp 从复制到我的 中client
。
我看到的是server
:
user@server:/path$ ls filename
filename
我现在可以scp
在client
shell 中输入,user@server:/path
从server
shell 中选择并复制并粘贴到client
shell,然后输入斜线并复制并粘贴filename
并附加一个点以获得:
user@client:~$ scp user@server:/path/filename .
到scp
文件从server
到client
。
现在,我正在寻找一个命令server
,其工作方式如下:
user@server:/path$ special_ls filename
user@server:/path/filename
这将为我提供完整的 scp 就绪字符串,以便复制并粘贴到client
shell 中。
形式上的东西
echo $USER@$HOSTNAME:${pwd}/$filename
使用相对/绝对路径。
是否存在这样的命令/开关组合,还是我必须自己破解它?
非常感谢。
答案1
用于打印此类输出以供粘贴的快速代码片段:
#!/bin/sh
SCPUSER="myuser"
SERVER="myserver"
while [ $# -ne 0 ]; do
printf '%s@%s:%s\n' "${SCPUSER}" "${SERVER}" "$(readlink -f "${1}")"
shift
done
通过该while; shift
构造,您可以给出多个将被打印的参数,并以换行符分隔。
这很简单;您可能正在寻找的上述“技巧”可能只是readlink
。
您还可以例如通过密钥设置ssh-agent
无密码登录(如果它是本地服务器并且安全性不是太严格)来包装scp
服务器端以避免粘贴步骤并直接scp
从服务器获取文件。