Eu quero definir a função cpfromserver
no bash para que quando eu corro
$ cpfromserver xxx yyy zzz
o resultado é o mesmo que se eu tivesse digitado
$ scp [email protected]:"/some/location/xxx/xxx.txt /some/location/xxx/xxx.pdf /some/location/yyy/yyy.txt /some/location/yyy/yyy.pdf /some/location/zzz/zzz.txt /some/location/zzz/zzz.pdf" /somewhere/else/
onde funciona para qualquer número de argumentos.
(Ou seja, a função deve copiar filename.txt
e filename.pdf
do diretório /some/location/filename/
no remote.server
para o diretório local /somewhere/else/
para cada filename
que eu especificar como um argumento para a função. E faça tudo em uma única conexão ssh
.)
Atualmente, eu escrevi uma função que funciona para um único argumento, e apenas faço um loop sobre ela, mas isto estabelece conexões ssh
separadas para cada argumento, o que é indesejável.
Minha dificuldade é que eu só sei usar argumentos de função individualmente por sua posição ( $1
, $2
, etc.) - não como manipular toda a lista.
[Note que estou escrevendo essa função como uma ferramenta de conveniência apenas para meu próprio uso, e assim eu priorizaria minha própria facilidade de compreensão sobre como lidar com casos patológicos como nomes de arquivos com aspas ou quebras de linha neles e outros enfeites. Eu sei que os nomes de arquivos com os quais eu vou usar são bem comportados.]