Форматирование 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 файлы с сервера.