Quando você copia um arquivo usando o comando usado:
$ cp /home/dsg/Downloads/sbt-launch-0.7.4.jar ~/bin
diferentes coisas acontecem dependendo de qual é o alvo.
1) ~ / bin é um diretório
O arquivo será copiado para o diretório ~ / bin mantendo o nome original do arquivo.
2) ~ / bin é um arquivo normal
O arquivo ~ / bin será sobrescrito pelo arquivo de origem.
3) ~ / bin não existe
O arquivo de origem será copiado para o nome de destino, criando um novo arquivo.
Por padrão, o diretório ~ / bin não existe, portanto, a menos que você tenha criado um diretório em algum momento no passado chamado ~ / bin, a opção 3 será o que aconteceu. Se houvesse um ~ / bin em existência, então, para o comando cp
sobrescrevê-lo, ele deveria ser um arquivo regular e não um diretório.
Você deve excluir o arquivo ~ / bin e criar um diretório com:
$ rm ~/bin
$ mkdir ~/bin
Então você pode copiar o arquivo jar nele com o mesmo comando que você usou antes.
(Agradecimentos a @grawity e @garyjohn em cujos comentários à pergunta esta resposta foi baseada.)