Turiu simlinką į svarbų katalogą. Noriu atsikratyti tos simlinko, bet išsaugoti už jos esantį katalogą.
Bandžiau rm
ir gavau rm: cannot remove 'foo'
.
Bandžiau rmdir
ir gavau rmdir: nepavyko pašalinti 'foo': Katalogas nėra tuščias
Tada atlikau rm -f
, rm -rf
ir sudo rm -rf
.
Tada ėmiausi ieškoti savo atsarginių kopijų.
Ar yra būdas atsikratyti simlinko, neišmetant kūdikio kartu su vonia?
# this works
rm foo
# versus
rm foo/
Iš esmės reikia nurodyti, kad būtų ištrintas failas, o ne katalogas. Manau, kad rm
ir rmdir
skiriasi dėl to, kad C biblioteka skirtingai traktuoja kiekvieną iš jų.
Bet kokiu atveju pirmasis veiks, o antrasis turėtų skųstis, kad foo yra katalogas.
Jei tai neveikia, kaip nurodyta pirmiau, patikrinkite savo teises. Norint pašalinti failus, reikia turėti teisę rašyti į katalogą, kuriame jie yra.
naudokite "unlink" komandą ir įsitikinkite, kad ne pabaigoje yra /
$ unlink mySymLink
unlink() ištrina pavadinimą iš failų sistemos. Jeigu šis vardas buvo paskutinė nuoroda į failą ir jokie procesai nėra atidarę failo, failas ištrinamas, o vieta, kurią jis naudojo, tampa prieinama pakartotiniam naudojimui. Jei šis vardas buvo paskutinė nuoroda į failą, tačiau bet kuris procesas vis dar turi atidarytą failą, failas egzistuos tol, kol bus uždarytas paskutinis jį nurodantis failo deskriptorius.
Manau, kad tai gali būti problemiška, jei teisingai skaitau.
Jeigu pavadinimas nurodė simbolinę nuorodą, nuoroda pašalinama.
Jei pavadinimas nurodė į lizdą, fifo ar įrenginį, jo pavadinimas pašalinamas, tačiau procesai, kurie turi atidarytą objektą, gali ir toliau jį naudoti.