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