É porque o nome do arquivo contém espaços. Portanto, o comando rm
interpreta como vários argumentos, o que não é intencional e obviamente falha.
Você precisa colocar o nome do arquivo entre aspas para ser passado como argumento único:
sudo rm "/usr/share/applications/Eclipse Mars C/C++.desktop"
Mas, como especialmente @JacobVlijm apontou, Eclipse Mars C/C++.desktop
não é um nome de arquivo válido, por causa do único caractere que não pode ser incluído nos nomes de arquivos, porque ele separa os diretórios: /
(barra). / p>
Se o comando descrito acima realmente funcionou, significa que você tem o arquivo C++.desktop
dentro do diretório /usr/share/applications/Eclipse Mars C
, o que é muito improvável, já que esta não é a estrutura recomendada para os diretórios .../applications
.
Mas se assumirmos que esse arquivo realmente existe conforme descrito no parágrafo anterior, existe outra maneira possível de inserir o nome do arquivo corretamente. Você pode escapar todos os espaços com \
(barra invertida) em vez de citar o nome inteiro:
sudo rm /usr/share/applications/Eclipse\ Mars\ C/C++.desktop
Mas observe que rm
apenas remove arquivos, não diretórios. Como nós assumimos (porque todo o resto é teoricamente impossível) que Eclipse Mars C/C++.desktop
não é um arquivo, mas um arquivo em um subdiretório, nós não alcançamos o que queremos ainda, pois ainda haveria o diretório (provavelmente vazio) /usr/share/applications/Eclipse Mars C
restante. Para remover também este subdiretório e todos os arquivos contidos (para que você possa omitir os comandos acima para excluir apenas o arquivo), temos que usar uma das variantes de comando abaixo:
sudo rm -r "/usr/share/applications/Eclipse Mars C"
sudo rm -r /usr/share/applications/Eclipse\ Mars\ C
Observe que agora não nos referimos ao nome do arquivo, mas apenas ao nome do diretório. E usamos o parâmetro -r
para rm
, que significa "excluir recursivamente".