Odpowiedzi:
Całkiem doskonałe rozwiązanie, jeśli chodzi o pliki, których nie można normalnie usunąć:
ls -il
Pierwsza kolumna pokazuje numer i-węzła plików.
find . -inum [inode-number] -exec rm -i {} \;
Spowoduje to usunięcie pliku z określonym numerem i-węzła po weryfikacji.
-deletezamiast -exec, a potem zdałem sobie sprawę, że używasz tego, rm -ico jest dobrym pomysłem, więc wycofałem się. Przepraszam.
Powinieneś być w stanie odnieść się do tego pliku jako ~/~(bez cudzysłowów), ponieważ rozszerzenie tyldy stosuje tylko tyldy ( ~) na samym początku słowa.
rm ./~tego samego powodu, co powiedziałeś
./~dosłownie oznacza „plik lub folder o nazwie ~w bieżącym katalogu” . Nie ma hacków takich jak znaki specjalne lub odwołania do i-węzłów.
./~. Po pięciu latach moja pamięć jest trochę rozmyta, ale myślę, że właśnie dlatego zasugerowałem, ~/~a nie bardziej normalne ./~: Pytanie dotyczy konkretnie „pliku o nazwie ~z katalogu domowego [OP]] ; nie „w bieżącym katalogu”.
Cytuj ( rm '~') lub Escape ( rm \~).
Zawsze jest to jeden z nich (również np. $) Lub „dodaj”, --aby zapobiec interpretacji nazwy pliku jako argumentu: rm -- -iusuwa plik o nazwie -i; przydatne również, rm -- *gdy chcesz usunąć wszystkie pliki w bieżącym katalogu: Nieprzypadkowo rm -f *tylko dlatego, że plik ma taką nazwę.
--zatrzymuje tylko interpretację następujących argumentów jako parametrów - nie uniemożliwia powłoce wykonania ekspansji (np. *), co dzieje się tutaj. (Wiem, że zasugerowałeś to jako alternatywę dla innych sytuacji, ale ostrzeżenie byłoby dobre.)