Recentemente em um servidor acabei acidentalmente criando um dos arquivos de logs com o sinal de menos na frente do nome do arquivo.
Ao tentar remover lembrei que isso pode ser uma dúvida bem comum em usuários Linux, pois quando colocamos o “-” na frente da maioria (pra não falar todos) dos comandos Linux, ele entende como um parâmetro.
No caso, o comando é o rm e eu tinha a seguinte árvore de arquivos:
drwxr-xr-x 2 root root 4,0K dez 29 18:51 . drwxr-xr-x 9 root root 4,0K dez 27 14:59 .. -rw-r----- 1 root adm 57K dez 29 18:51 0-log-geral.txt -rw-r--r-- 1 root root 1,8M dez 29 01:00 .log -rw-r----- 1 root adm 32K dez 29 01:00 -log-geral.txt
Ao tentar remover o arquivo “-log-geral.txt” como seria o convencional rm -log-geral.txt vem essa mensagem:
rm: invalid option -- 'l'
Tente "rm ./-log-geral.txt" para remover o arquivo '-log-geral.txt'.
Tente "rm --help" para mais informações.
Ele já deu uma das opções, porém temos várias que você pode usar como quiser:
Esse é o padrão a ser usado
rm ./-log-geral.txt
Se o arquivo tivesse espaços, você pode usar da seguinte forma: (arquivo -log-geral 2.txt) colocar as aspas
rm "./-log-geral 2.txt"
Ou também dessa forma: (arquivo -log-geral 2.txt) colocar a barra antes do espaço
rm ./-log-geral\ 2.txt
Se tiver algum parênteses, da seguinte forma: (arquivo -log-geral(2).txt) colocar a barra antes do ) ou (
rm ./-log-geral\(2\).txt
Se tiver parênteses e espaços, deve-se colocar a barra para ambos: (arquivo -log-geral (2).txt)
rm ./-log-geral\ \(2\).txt
Mas pode ser outro. Esse abaixo não tem autocomplete (se vc apertar tab para terminar de preencher o arquivo, ele não reconhece)
rm -- -log-geral.txt
Por enquanto é isso, pessoal. Espero ter ajudado vocês!