Używam terminala na maszynie Ubuntu i jest plik, który chciałbym usunąć. Nazwa pliku to \
(tylko odwrotny ukośnik).
Teraz zwykle robiłbym to
rm filename
Jeśli jednak to zrobię rm \
, wydaje mi się, że próbuję napisać polecenie wieloliniowe.
Jak mogę usunąć ten plik? Wiem, że mogłem po prostu użyć systemu plików GUI, ale to nie jest bardzo wydajne.
Jak mogę usunąć (w terminalu) plik o nazwie \
?
code
bloku tutaj w tym komentarzu!)fsck
. Poważnie. Jeśli plik o nazwie/
istnieje, twój system plików jest uszkodzony.*
…Odpowiedzi:
Użyj
rm \\
(ucieczka przed ukośnikiem innym ukośnikiem). Zauważ, że to działa również Podobnie, dla katalogów o nazwach\
(stosując albormdir
, alborm
z-r
flagą).Przykład:
źródło
rm '\'
(ale nierm "\"
).\
znak ten jest używany jako znak zmiany znaczenia w ciągach rozdzielanych podwójnymi cudzysłowami. Powiedzenierm "\"
zostanie sparsowane do niezamkniętego łańcucha, ponieważ drugi znak cudzysłowu jest używany ze znakiem zmiany znaczenia (a zatem będzie analizowany jako sam znak podwójnego cudzysłowu, a nie na końcu łańcucha). Zatem terminal będzie czekał, aż zakończysz łańcuch innym"
. Równoważną metodą użycia tutaj podwójnych cudzysłowów byłabyrm "\\"
(która jest bezpośrednio równoważna zarówno z, jakrm '\'
irm \\
, jak już potwierdziłeś).Ogólna taktyka ręcznego usuwania plików z niezręcznymi znakami w ich nazwach to
Spowoduje to monit o wybranie, czy usunąć każdy plik w katalogu.
źródło
rm -i ./?
./
Można również odłączyć, odwołując się do i-węzła pliku
źródło
Najpierw sprawdź i-węzeł pliku. ls -li
137791 -rw-rw-r--. 1 svr svr 366 11 marca 15:57
i-węzeł „\” to „137791, a następnie użyj polecenia find, aby usunąć„ \ ”z numerem i-węzła.
odnaleźć . -inum 137791 -exec rm -i {} \;
rm: usunąć zwykły plik `./ \ '? tak
„\” zostanie wówczas usunięte.
źródło