Fjern en symbolsk lenke til en katalog

Jeg har en symbolsk lenke til en viktig katalog. Jeg vil kvitte meg med denne symbolkoblingen, men beholde katalogen bak den.

Jeg prøvde rm og får tilbake rm: cannot remove 'foo'. Jeg prøvdermdirog fikk tilbakermdir: failed to remove 'foo': Directory not empty Deretter gikk jeg gjennomrm -f,rm -rfogsudo rm -rf`.

Så gikk jeg for å finne sikkerhetskopiene mine.

Er det en måte å bli kvitt symbolkoblingen uten å kaste babyen med badevannet?

Løsning
# this works
rm foo
# versus
rm foo/

I utgangspunktet må du be den om å slette en fil, ikke slette en katalog. Jeg tror forskjellen mellom rm og rmdir eksisterer på grunn av forskjeller i måten C-biblioteket behandler hver.

I alle fall bør den første fungere, mens den andre bør klage på at foo er en katalog.

Hvis det ikke fungerer som ovenfor, må du sjekke tillatelsene dine. Du trenger skrivetillatelse til den inneholdende katalogen for å fjerne filer.

Kommentarer (11)

bruk kommandoen "unlink" og sørg for ikke å ha / på slutten.

$ unlink mySymLink

unlink() sletter et navn fra filsystemet. **Hvis dette navnet var den siste lenken til en fil og ingen prosesser har filen åpen, slettes filen og plassen den brukte, gjøres tilgjengelig for gjenbruk. Hvis navnet var den siste lenken til en fil, men noen prosesser fortsatt har filen åpen, vil filen fortsette å eksistere til den siste filbeskrivelsen som refererer til den, lukkes.

Jeg tror dette kan være problematisk hvis jeg leser det riktig.

Hvis navnet refererte til en symbolsk lenke, fjernes lenken..

Hvis navnet refererte til en socket, fifo eller enhet, fjernes navnet for den, men prosesser som har objektet åpent, kan fortsette å bruke det.

https://linux.die.net/man/2/unlink

Kommentarer (11)

Hvis rm ikke kan fjerne en symbolsk kobling, må du kanskje se på tillatelsene for katalogen som inneholder den symbolske koblingen. For å fjerne katalogoppføringer må du ha skrivetillatelse på katalogen som inneholder dem.

Kommentarer (0)