Jak utworzyć katalog o nazwie „-p” w systemie Linux za pomocą Bash? [duplikować]

22

Jak w Bash mogę utworzyć katalog o nazwie -p?

mkdir -pnie powiodło się
mkdir "-p"nie powiodło się
mkdir "\-p"nie powiodło się
mkdir \-pnie powiodło się

Jichao
źródło
1
Zauważ, że wszystkie próbują uciec przed parametrem bash. Ponieważ jest to ten sam znak ucieczki, co nie ucieczka, wszystkie z wyjątkiem trzeciego wyślą ciąg „-p” do mkdir, który przeanalizuje go jako opcję. Analiza opcji nie jest wykonywana w bash, więc jakakolwiek zmiana (opisana w odpowiedziach poniżej) jest cechą mkdir (a raczej brakiem błędu).
Score_Under
11
Musisz zapytać, dlaczego chcesz taki katalog. Byłaby to PITA do użycia.
Daniel R Hicks,
3
@DanielRHicks: Utworzyłem ten folder przez pomyłkę, ale nie wiem, jak go usunąć.
Jichao
4
Czy zatem pytanie nie powinno brzmieć „Jak usunąć katalog o nazwie„ -p ”w systemie Linux z Bash?
chepner
@chepner: Ponieważ w rzeczywistości są to te same problemy. Próbowałem usunąć katalog, rmdirale nie powiodły się te same błędy.
Jichao

Odpowiedzi:

40

Większość narzędzi (wszystkie zgodne z POSIX, z wyjątkiem testi echo) obsługuje opcję „koniec opcji” -- , dzięki czemu można uruchomić:

mkdir -- -p

Jest to szczególnie przydatne podczas zmiany nazwy lub usuwania plików, które potencjalnie mogą zaczynać się od myślnika. W skryptach należy zawsze używać

mv -- "$filename"

zamiast zwykłej mv "$filename"lub, co gorsza, niecytowanej nazwy pliku.

slhck
źródło
3
Niesamowite. To naprawdę dobrze wiedzieć
Bruno9779,
18

mkdir ./-p

Pamiętaj, że większość innych programów musiałaby używać tej samej „sztuczki”.

Daniel B.
źródło