Observe que tudo isso está tentando escapar do parâmetro para o bash. Como é o mesmo que escapou e não escapou, todos estes, exceto o terceiro, apenas enviarão a string "-p" para o mkdir, que o analisará como uma opção. A análise da opção não é feita no bash; portanto, qualquer maneira de contornar isso (descrito nas respostas abaixo) é um recurso do mkdir (ou melhor, falta de bug).
Score_Und
11
Tenho que perguntar por que você quer esse diretório. Seria uma PITA para usar.
Daniel R Hicks
3
@DanielRHicks: criei esta pasta por engano, mas não sei como excluí-la.
Jichao
4
Portanto, a pergunta não deveria ser "Como excluir um diretório chamado '-p' no Linux com Bash"?
chepner
@chepner: Porque na verdade são os mesmos problemas. Eu tentei excluir o diretório rmdirmas falhei com os mesmos erros.
Jichao
Respostas:
40
A maioria dos utilitários (todos compatíveis com POSIX, exceto teste echo) suporta uma opção "fim de opções"-- , para que você possa executar:
mkdir ---p
Isso é especialmente útil ao renomear ou remover arquivos que poderiam começar com um traço. Nos scripts, você deve sempre usar
mv --"$filename"
em vez de um mv "$filename"nome de arquivo simples ou, ainda pior, um nome não citado.
rmdir
mas falhei com os mesmos erros.Respostas:
A maioria dos utilitários (todos compatíveis com POSIX, exceto
test
eecho
) suporta uma opção "fim de opções"--
, para que você possa executar:Isso é especialmente útil ao renomear ou remover arquivos que poderiam começar com um traço. Nos scripts, você deve sempre usar
em vez de um
mv "$filename"
nome de arquivo simples ou, ainda pior, um nome não citado.fonte
mkdir ./-p
Lembre-se de que a maioria dos outros programas precisaria usar o mesmo "truque".
fonte