格式化 pwd/ls 以用于 scp

格式化 pwd/ls 以用于 scp

我有两个带有 的终端窗口bash。一个位于client计算机上,另一个在 上有 SSH 会话server。在 上server,我位于一个目录中,看到一个文件,我想client使用 scp 从复制到我的 中client

我看到的是server

user@server:/path$ ls filename
filename

我现在可以scpclientshell 中输入,user@server:/pathservershell 中选择并复制并粘贴到clientshell,然后输入斜线并复制并粘贴filename并附加一个点以获得:

user@client:~$ scp user@server:/path/filename .

scp文件从serverclient

现在,我正在寻找一个命令server,其工作方式如下:

user@server:/path$ special_ls filename
user@server:/path/filename

这将为我提供完整的 scp 就绪字符串,以便复制并粘贴到clientshell 中。

形式上的东西

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从服务器获取文件。

相关内容