Primeiro de tudo, você não precisa do -r
flag que é (de man cp
):
-R
,-r
,--recursive
copy directories recursively
Isso é útil somente ao copiar diretórios inteiros e seus conteúdos. Então, sempre que seus nomes de arquivo contiverem caracteres estranhos, você precisará escapa-los ou protegê-los com aspas simples, como as outras respostas já sugeriram:
cp '$somefile.class' /folder2
cp \$somefile.class /folder2
Como alternativa, você pode usar o recurso de expansão glob do shell para copiar o arquivo:
cp ?somefile.class /folder2
cp *somefile.class /folder2
O ?
corresponde a "qualquer caractere único" e *
corresponde a "0 ou mais caracteres". Portanto, usar esses globs permitirá que você copie o arquivo de destino sem se preocupar com o nome. No entanto, tenha em mente que você deve usar isso com cuidado e certificar-se de que os globs somente correspondam ao arquivo que você deseja copiar. Por exemplo, os que eu usei também corresponderiam a Lsomefile.class
.