Como fazer pastas scp com nomes desagradáveis usando uma função shell

1

Estou tentando escrever uma função que utilizarei em todas as minhas máquinas para facilitar o envio de arquivos em um local fixo da minha rede.

Aqui está o meu script até agora. Algumas pastas podem ter nomes duplicados em minhas máquinas, então estou adicionando um uuid no final do nome da pasta.

function putOnSG3() {
uuid='uuidgen'
if [[ -d $1 ]]; then scp -rv "$1" shiny:/Volumes/Seagate3To/"$1.$uuid";
else echo $1 " is not a directory. Not copying.";
fi;
}

Estou invocando assim:

$ putOnSG testFo\[l\}der

Aqui está o problema:

zsh:1: bad pattern: /Volumes/Seagate3To/testFo[l}der.d84abc26-501b-4f89-a636-518b4059a770

Como posso gerenciar esses nomes desagradáveis de arquivos?

O sistema de arquivos de destino faz distinção entre maiúsculas e minúsculas hfsplus, os sistemas de arquivos de origem são vários extfs das máquinas Linux e NTFS.

    
por alecail 11.12.2012 / 22:26

2 respostas

1

Aqui está uma solução de trabalho:

function putOnSG() {
uuid='uuidgen'
if [[ -d $1 ]]; then du -sh "$1";
scp -rv "$1" shiny:/Volumes/Seagate3To/\"$1\".$uuid
else echo $1 "is not a directory. Not copying.";
fi;
}

As únicas diferenças com a minha solução inicial que não funciona são as barras invertidas em torno das aspas no segundo argumento do scp.

    
por 14.12.2012 / 16:27
0

Todos os símbolos especiais, como [], (,), #, etc, devem ser escritos após a barra invertida "\". Você pode tentar fazer isso:

$ touch test\[ ; ll test\[ ;
-rw-r--r-- 1 s.gvozdetskiy s.gvozdetskiy 0 Dec 12 12:00 test[
$ mkdir test\[ ; ll ./
...
drwxr-xr-x 2 s.gvozdetskiy s.gvozdetskiy     4096 Dec 12 12:04 test[
...

Eu acho que o suporte do hfsplus é específico.

    
por 12.12.2012 / 09:11

Tags