Jak usunąć plik, którego nazwa pliku zaczyna się od myślnika (myślnik lub minus) -
? Jestem ssh'd na zdalnym serwerze OSX i mam ten plik w moim katalogu:
tohru:~ $ ls -l
total 8
-rw-r--r-- 1 me staff 1352 Aug 18 14:33 --help
...
Jak na świecie mogę usunąć --help
z interfejsu CLI? Ten problem pojawia się czasami w różnych formach, pliki te można łatwo utworzyć, ale trudno się ich pozbyć.
Próbowałem użyć odwrotnego ukośnika
rm \-\-help
Próbowałem cytatów
rm "--help"
Jak zapobiec interpretowaniu znaku minus (myślnik lub myślnik) jako opcji?
rm --help
tak naprawdę wyjaśnia, jak usunąć nazwy plików zaczynające się na-
. dobre pytanie jednak.Odpowiedzi:
Użyj „-”, aby rm przestał analizować opcje wiersza poleceń, takie jak:
źródło
rm
polecenia obsługują--
argument?--
wcześniej GNU (SysIII, 1980) i są standardem / POSIX. Standardowe narzędzia z wyjątkiem kilku wyjątków (jakecho
) rozumieją--
. YMMV dla innych poleceń, jeśli nie używają interfejsu API getopt () do analizowania opcji.Lub możesz to zrobić
źródło
--
specjalnie.-
narzędzi tekstowych lubcd
Thefoo=bar
ofawk
...rm -- <filename>
nie.Użyj,
find
aby to zrobić:Jest to dobra metoda, ponieważ jeśli masz więcej niż kilka takich plików, które możesz usunąć, możesz uzyskać listę podglądu plików, po prostu uruchamiając find bez
-delete
opcji, a następnie, jeśli lista plików wygląda dobrze, po prostu uruchom to znowu z-delete
.W rzeczywistości unikanie
rm
na korzyśćfind
(zwłaszcza z podglądem) jest dobrym nawykiem, który pomoże ci uniknąć błędówrm *
, które pewnego dnia nieuchronnie cię ugryzą.Zauważ jednak, że to wyszukiwanie będzie się powtarzać we wszystkich twoich podkatalogach, więc możesz chcieć uruchomić go z ograniczeniem głębokości podkatalogu, takim jak to:
co ogranicza wyszukiwanie do bieżącego katalogu.
źródło
find
listę plików / katalogów do przejrzenia. Takfind . -name...
.-delete
i-maxdepth
nie są też standardowymi opcjami.Odpowiedzi Vegara Nilsena i edfuha są bardzo dobre i właściwe rozwiązania takiego problemu.
Chcę dodać ogólną odpowiedź na to pytanie, która pozwala usunąć dowolny plik o trudnej nazwie. Najpierw jego numer i-węzła jest uzyskiwany za pomocą
ls -i
lub w jakiejś formie,stat
a następnie plik jest usuwany przez wyszukiwanie plików w bieżącym katalogu według numeru i-węzła i wykonanierm
polecenia na pliku z pasującym numerem i-węzłaPonieważ numery i-węzłów są unikalne w każdym systemie plików, można za pomocą tego usunąć dowolny plik; Unicode lub używanie znaków zmiany znaczenia. Pisanie jest zawsze bardzo denerwujące, dlatego polecam dodanie wiersza
do
.inputrc
pliku, jeśli używasz bash. Umożliwia to przeglądanie listy możliwych uzupełnień ( w celu uzyskania dalszych informacji ).źródło
find -name '--help' -delete
rm --help
, co nadal nie usuwa pliku. Wystarczy użyćrm ./--help
(lubrm -i *
.find
ścieżkę argumentu wiersza poleceń do wszystkich plików, aby działałrm ./--help
irm ./sub/dirs/--help
. Aby naprawić drugi, należałoby dodać-maxdepth 1
, ale to wszystko zasadniczo polega na zastosowaniu rozwiązania @ edfuh w bardziej okrągły, zawiły sposób i-delete
jest bezpieczniejsze niż w każdym razie-exec rm
.{}
i\;
, w przeciwnym razie nie zadziała.-xdev
. To ci nie pomożels -i --help
.Brutalne rozwiązanie:
źródło
Linux Przewodnik tworzenia pliku z myślnikami i spacjami, a następnie usuwania go.
BĄDŹ OSTROŻNY! Nie uruchamiaj przypadkowo
rm -rf /
podobnego polecenia kasowania.Jeśli plik, który próbujesz usunąć obejmuje gwiazdki lub ukośniki, nie przypadkowo pompować
.
Or/*
lub*
lub inny symbol wieloznaczny, który mógłby kaskadowego usuwania systemu operacyjnego.Utwórz plik o nazwie „--yo yo”
Najpierw znajdź za pomocą find:
Upewnij się, że polecenie find TYLKO odnajduje JEDEN plik, który chcesz usunąć:
Następnie przekaż opcję -delete, aby znaleźć, aby je usunąć:
Aaaannd już go nie ma.
źródło
Midnight Commander (
mc
) jest najłatwiejszy, po prostu wskaż go i naciśnij F8;)źródło
apt-get install mc || yum install mc; mc
różne klawisze strzałek i F8 są łatwiejsze niżrm ./--help
?oto rozwiązanie, którego użyłem przed znalezieniem tego wątku.
użyj
vim
do „edycji” katalogu:następnie (in vim) wybierz plik, naciśnij del i potwierdź usunięcie.
kiedy skończysz, przestań vim z
:q
źródło
Czy próbowałeś dodać nazwę katalogu jako prefiks:
Korzystanie z katalogu jako przedrostka pliku pomaga uniknąć błędnej interpretacji znaku „minus” jako opcji polecenia przez funkcję analizatora składni.
źródło
Jeśli chcesz zmienić nazwę pliku,
-.bar
(mv nie będzie działać), spróbuj tego:przed użyciem polecenia:
Powinieneś być w stanie sprawdzić zawartość oryginalnego pliku w foo.bar
źródło