格式化pwd / ls以与scp一起使用


2

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

server我看到:

user@server:/path$ ls filename
filename

我现在可以输入scpclient外壳中,选择并复制user@server:/pathserver外壳并粘贴到client外壳,然后键入斜线和复制并粘贴filename和追加一个点来获得:

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

scp从一个文件serverclient

现在,我正在搜索上的命令,该命令server将像这样工作:

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

这将给我完整的scp-ready字符串以复制并粘贴到client外壳中。

形式的东西

echo $USER@$HOSTNAME:${pwd}/$filename

使用相对/绝对路径。

是否有这样的命令/开关组合,还是我必须自己修改?

非常感谢你。

Answers:


4

快速片段以打印此类输出以进行粘贴:

#!/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从服务器文件。


谢谢,这readlink是一个很好的提示,尽管其余的都是黑客。如果没有人提供一些已经内置的解决方案(无需将此脚本复制到任何服务器),我将接受此答案。
eumiro 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.