Pozbywanie się pliku o nazwie „-d” [duplikat]


18

Możliwe duplikaty:
Jak usunąć plik bash o nazwie „-p”?
Jak usunąć plik o tej nazwie w systemie Linux: -] ??????? q
Jakiego polecenia należy użyć, aby usunąć plik o nazwie `-rf`?

Przypadkowo utworzyłem plik o nazwie: -d

Próbowałem użyć pojedynczych i podwójnych znaków cudzysłowu, a także symboli wieloznacznych, aby je usunąć, ale za każdym razem „rm” daje mi ten błąd:

Ostrzeżenie: opcja --directory (-d) jest nieudokumentowana i nie działa. Użyj -rf do usunięcia niepustych katalogów rm: missing operand Spróbuj `rm --help ', aby uzyskać więcej informacji.

Jak pozbyć się pliku?

Odpowiedzi:


44
rm -- -d

--oznacza „koniec opcji”. Cokolwiek dalej w wierszu poleceń następujące po tym jest interpretowane jako argument (tj. Nazwa pliku w twoim przypadku), a nie jako opcja.



8

Użycie „-” jest zdecydowanie najłatwiejsze w tym konkretnym przypadku. Jednak bardziej ogólnym rozwiązaniem, jeśli natkniesz się na plik z niedrukowalnymi znakami kontrolnymi, jest odwołanie się do pliku według i-węzła:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find ma opcję -delete:

find -name "-d" -delete

inaczej możesz spróbować

find -name "-d" -exec rm {} ";" 

ale - - rozwiązanie z góry jest krótsze, a sposób zatrzymania interpretacji flag za pomocą - jest używany przez wiele programów, korzystających z biblioteki getopt, więc uczenie się go jest ogólnie przydatną rzeczą.

Ale znajdź / usuń jest również bardzo przydatna do nauczenia się. Zauważ, że oba przykłady będą rekurencyjnie usuwać pliki o nazwie „-d”, co może się nie zdarzać często, ale jeśli zdarzy ci się mieć jeden plik o nazwie „-d”, możesz mieć ich więcej. :)

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.