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.
-delete
zamiast -exec
, a potem zdałem sobie sprawę, że używasz tego, rm -i
co 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 -- -i
usuwa 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.)