Não é um caso de globbing dar errado, mas quais arquivos estão presentes no diretório:
- Nenhum arquivo
.bak
está presente. Em seguida,*.bak
, a menos quenullglob
seja definido, seja expandido para*.bak
. Portanto, o comando executado é literalmentecp -p fstab *.bak
. - Apenas
fstab.bak
está presente. Em seguida,*.bak
será expandido para apenasfstab.bak
ecp -p fstab fstab.bak
será executado. Isso é o que você parece esperar, independentemente dos arquivos presentes. - Vários arquivos
*.bak
estão presentes (por exemplo,fstab.bak
einputrc.bak
). Então,cp -p fstab fstab.bak inputrc.bak
é executado. Nesse caso,cp
espera que o último argumento seja um diretório ou que um diretório de destino seja especificado usando-t
. Se não, vai reclamar.
Não faça coisas idiotas como cp file *.bak
, cujos resultados podem variar com base nos arquivos presentes. Você realmente quer fazer o backup de fstab
para iputrc.bak
se fstab.bak
não estiver presente e inputrc.bak
for? Se você está com preguiça de digitar o nome do arquivo, use a expansão de chaves:
cp -p file{,.bak}
Melhor ainda, use o controle de versão e etckeeper em vez do frágil .bak
-copying.