Jak usunąć plik o tej nazwie w systemie Linux: -] ??????? q [duplikat]

14

Jakoś plik o nazwie -]???????qzostał utworzony w moim terminalu. Próbowałem rm -f "-] ??????? q" (w podwójnych cudzysłowach), ale nie został usunięty. (Błąd ::) rm: invalid option -- ]. Jak mogę to usunąć?

djsmiley2k TMW
źródło
Miałem podobny problem, w moim przypadku problem dotyczył implementacji samby, po prostu spróbuj ssh na serwerze, a następnie usuń go
Buksy,

Odpowiedzi:

26

Na przykład z:

rm -- '-]???????q'

Gdzie --oznacza: „zatrzymaj opcje analizy”.

Cyrus
źródło
Rzeczywiście, natknąłem się na podobny problem, nawet nie myśląc o byciu przełącznikiem. Przysięgam, że spędziłem 2 godziny próbując to rozgryźć.
Jeff F.
Wiele aplikacji używa --, zgadnij, że jest to rodzaj de facto standardu ze względu na getoptfunkcję.
cyr
13

Możesz użyć nazwy pliku z rm lub numeru i-węzła z find jak:

rm -- -]???????q
# or
  -> ls -i                                                                                                                         
47984689 blah.ui  47983771 __init__.py  
47983773 testpy.e4p  47985161 Ui_blah.py

  -> find -inum 47983773                                                                                                           
./testpy.e4p

  -> find -maxdepth 1 -inum 47983773 -exec rm -i '{}' \;
#or
  -> find -maxdepth 1 -inum 47983773 -delete
OneOfOne
źródło
Dodaj -maxdepth 1, w przeciwnym razie znajdź będzie iterował przez wszystkie podkatalogi:find -maxdepth 1 -inum 47983773 -delete
Fabian
@FabianRitzmann dobre połączenie, dodałem je.
OneOfOne,
1
To powinna być wybrana odpowiedź. Dostęp do pliku z niepoprawnymi znakami w nazwie przez jego iNode jest jedynym prawidłowym sposobem.
ScumCoder
1
rm ./"-]???????q"

Podwójne cudzysłowy zapobiegają rozszerzaniu przez powłokę znaków zapytania. Na przykład, jeśli masz inny plik o nazwie -] foobar.q :

$ touch ./"-]???????q" ./-]foobar.q
$ echo ./-]???????q
./-]foobar.q ./-]???????q
marco
źródło
O. Umieściłem cytaty, ale brakowało./