Форматирование pwd/ls для использования с scp

У меня есть два окна терминала с bash, Один местный на client компьютер, другой имеет SSH-сессию на server, На serverЯ нахожусь в каталоге и вижу файл, который я хотел бы скопировать в мой client используя scp из client,

На server Я вижу:

user@server:/path$ ls filename
filename

Теперь могу набрать scp в client оболочки, выберите и скопируйте user@server:/path от server Оболочка и вставить в client оболочки, затем введите косую черту, скопируйте и вставьте filename и добавьте точку, чтобы получить:

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

в scp файл из server к client,

Сейчас я ищу команду на server, это будет работать так:

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

который дал бы мне полную готовую для scp строку, чтобы скопировать и вставить в client ракушка.

Что-то в форме

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 файлы с сервера.

Другие вопросы по тегам