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.
rmdir
ale nie powiodły się te same błędy.Odpowiedzi:
Większość narzędzi (wszystkie zgodne z POSIX, z wyjątkiem
test
iecho
) obsługuje opcję „koniec opcji”--
, dzięki czemu można uruchomić: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ć
zamiast zwykłej
mv "$filename"
lub, co gorsza, niecytowanej nazwy pliku.źródło
mkdir ./-p
Pamiętaj, że większość innych programów musiałaby używać tej samej „sztuczki”.
źródło