Come creare una directory denominata '-p' sotto Linux con Bash? [duplicare]


22

In Bash, come potrei creare una directory chiamata -p?

mkdir -pfallito.
mkdir "-p"fallito.
mkdir "\-p"fallito.
mkdir \-pfallito.


1
Si noti che tutti questi tentano di sfuggire al parametro per bash. Dal momento che è lo stesso escape di non escape, tutti questi tranne il terzo invieranno semplicemente la stringa "-p" a mkdir, che la analizzerà come opzione. L'analisi delle opzioni non viene eseguita in bash, quindi qualsiasi modo per evitarlo (descritto nelle risposte seguenti) è una caratteristica di mkdir (o meglio, una mancanza di bug).
Score_Under

11
Devo chiederti perché vorresti una tale directory. Sarebbe un PITA da usare.
Daniel R Hicks,

3
@DanielRHicks: ho creato questa cartella per errore, ma non so come eliminarla.
Jichao,

4
Quindi, la domanda non dovrebbe essere "Come eliminare una directory chiamata '-p' sotto Linux con Bash"?
Chepner,

@chepner: Perché in realtà sono gli stessi problemi. Ho provato a eliminare la directory rmdirma non ci sono riuscito con gli stessi errori.
Jichao,

Risposte:


40

La maggior parte dei programmi di utilità (tutti conformi a POSIX tranne teste echo) supportano un'opzione "fine opzioni" -- , quindi è possibile eseguire:

mkdir -- -p

Ciò è particolarmente utile quando si rinomina o si rimuovono file che potrebbero potenzialmente iniziare con un trattino. Negli script dovresti sempre usare

mv -- "$filename"

anziché un nome di file semplice mv "$filename"o, peggio ancora, un nome non quotato.


3
Eccezionale. Questo è davvero buono a sapersi
Bruno9779,

18

mkdir ./-p

Tieni presente che la maggior parte degli altri programmi dovrebbe utilizzare lo stesso "trucco".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.