Mam taki katalog:
$ ls -l
total 899166
drwxr-xr-x 12 me scicomp 324 Jan 24 13:47 data
-rw-r--r-- 1 me scicomp 84188 Jan 24 13:47 lod-thin-1.000000-0.010000-0.030000.rda
drwxr-xr-x 2 me scicomp 808 Jan 24 13:47 log
lrwxrwxrwx 1 me scicomp 17 Jan 25 09:41 msg -> /home/me/msg
I chcę go usunąć za pomocą rm -r
.
Jednak boję się, rm -r
że podąży za dowiązaniem symbolicznym i usunie wszystko z tego katalogu (co jest bardzo złe).
Nie mogę nic na ten temat znaleźć na stronach podręcznika. Jakie byłoby dokładne działanie rm -rf
z katalogu powyżej tego?
Odpowiedzi:
Przykład 1: Usuwanie katalogu zawierającego miękkie łącze do innego katalogu.
Widzimy więc, że cel soft-link przetrwał.
Przykład 2: Usuwanie miękkiego linku do katalogu
Tylko miękki link jest usuwany. Cel soft-link przetrwa.
Przykład 3: Próba usunięcia celu miękkiego łącza
Plik docelowy dowiązania symbolicznego nie zachowuje się.
Powyższe eksperymenty przeprowadzono na systemie Debian GNU / Linux 9.0 (stretch).
źródło
Twój katalog / home / me / msg będzie bezpieczny, jeśli rm -rf katalog, z którego uruchomiłeś ls. Tylko symboliczne łącze zostanie usunięte, a nie katalog, na który wskazuje.
Jedyną rzeczą, na którą chciałbym zachować ostrożność, byłoby wywołanie czegoś takiego jak „rm -rf msg /” (z ukośnikiem końcowym). Nie rób tego, ponieważ spowoduje to usunięcie katalogu, na który wskazuje msg, zamiast dowiązania symbolicznego msg samo.
źródło
rm
powinien usunąć pliki i katalogi. Jeśli plik jest dowiązaniem symbolicznym, link jest usuwany, a nie cel. Nie zinterpretuje dowiązania symbolicznego. Na przykład, jakie powinno być zachowanie podczas usuwania „zepsutych linków” - rm kończy się z 0 nie z niezerowym, co oznacza błądźródło