GNU/Linux >> Znalost Linux >  >> Linux

Odeberte symbolický odkaz na adresář

# this works:
rm foo
# versus this, which doesn't:
rm foo/

V zásadě mu musíte říct, aby smazal soubor , nikoli odstranit adresář . Věřím, že je rozdíl mezi rm a rmdir existuje kvůli rozdílům ve způsobu, jakým knihovna C s každým zachází.

V každém případě by první měl fungovat, zatímco druhý by si měl stěžovat, že foo je adresář.

Pokud to nefunguje, jak je uvedeno výše, zkontrolujte svá oprávnění. K odstranění souborů potřebujete oprávnění k zápisu do obsahujícího adresáře.


použijte příkaz "unlink" a ujistěte se, že ne mít / na konci

$ unlink mySymLink

unlink() odstraní jméno ze systému souborů. Pokud byl tento název posledním odkazem na soubor a žádný proces nemá soubor otevřený, soubor se smaže a prostor, který používal, je zpřístupněn pro opětovné použití. Pokud byl název posledním odkazem na soubor, ale všechny procesy mají soubor stále otevřený, soubor zůstane v existenci, dokud nebude uzavřen poslední deskriptor souboru, který na něj odkazuje.

Myslím, že to může být problematické, pokud to čtu správně.

Pokud název odkazuje na symbolický odkaz, bude odkaz odstraněn.

Pokud název odkazuje na soket, fifo nebo zařízení, jeho název je odstraněn, ale procesy, které mají objekt otevřený, jej mohou nadále používat.

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


Linux
  1. Správce souborů Java

  2. Smazat všechny soubory v adresáři, jejichž jméno neodpovídá řádku v seznamu souborů?

  3. Rozdíl ve výpočtu velikosti adresáře?

  1. Selhalo přesměrování na název souboru Globbed?

  2. Jak mohu symbolicky propojit soubor v Linuxu?

  3. Bash:Žádný takový soubor nebo adresář?

  1. sys/types.h:Žádný takový soubor nebo adresář

  2. Chyba I/O v systému Linux:nelze odebrat adresář jako root

  3. Jak mohu odstranit soubor nebo adresář s názvem \?