Como criar um diretório chamado '-p' no Linux com Bash? [duplicado]


22

No Bash, como eu poderia criar um diretório chamado -p?

mkdir -pfalhou.
mkdir "-p"falhou.
mkdir "\-p"falhou.
mkdir \-pfalhou.


1
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.


3
Impressionante. Isso é muito bom saber
Bruno9779

18

mkdir ./-p

Lembre-se de que a maioria dos outros programas precisaria usar o mesmo "truque".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.