Eu estou tentando copiar o código-fonte de um projeto para outro diretório, mas não quero copiar o diretório .git (já que é grande e desnecessário para mim) eu tentei usar isso:
cp -r ~/source/!(.git) ~/destination
mas copiou o diretório pai da origem (neste caso o diretório ~ / home) para o destino. Eu tentei replicá-lo usando esses comandos e parece funcionar sem globbing:
user1@user1:~$ mkdir test
user1@user1:~$ mkdir test2
user1@user1:~$ mkdir test/orig
user1@user1:~$ touch test/file1
user1@user1:~$ touch test/orig/file2
user1@user1:~$ ls test
file1 orig
user1@user1:~$ ls test/orig
file2
user1@user1:~$ cp -r test/orig/. test2
user1@user1:~$ ls test2
file2
mas, uma vez que eu tento omitir o subdiretório com o globbing, ele também copia o pai:
user1@user1:~$ rm test2/*
user1@user1:~$ ls test2
user1@user1:~$ mkdir test/orig/.sub
user1@user1:~$ cp -r test/orig/!(.sub) test2
cp: will not create hard link 'test2/orig' to directory 'test2/.'
user1@user1:~$ ls test2
file1 file2
imprimir o que está na expressão expandida mostra que ele é realmente traduzido para três termos, um dos quais é o diretório pai:
user1@user1:~$ echo test/orig/!(.sub)
test/orig/. test/orig/.. test/orig/file2
isso é um bug no bash ou não estou usando o glob corretamente?