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ę


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.