Odkaz v systému Linux je speciální soubor, který odkazuje na jiný soubor nebo adresář. Jeden soubor tak může být umístěn na několika místech najednou. Když je původní soubor odstraněn, odkaz zůstane zachován. To může mít za následek pády a obecně zahlcení systému.
Na úvod si vysvětlíme způsob kontroly, zda je soubor skutečně odkazem. To se pohodlně provádí pomocí nástroje ls
. Poté se podíváme na tři způsoby odstranění, z nichž každý má svá specifika.
Pomocí nástroje ls
je vhodné zobrazit informace o souboru. Chcete-li nástroj použít, zadejte mu parametr -l
a určete cestu. Jako příklad si vezměme soubor ~/symlinks/link_1
:
$ ls -l ~/symlinks/link_1
Můžete zkontrolovat celý katalog odkazů:
$ ls -l ~/symlin
Soubor, který není potřeba, je označen charakteristickou šipkou za svým názvem.
Příkaz rm
lze použít k odstranění libovolného souboru v souborovém systému Linux, včetně odkazů. To znamená, že je vhodný pro náš úkol. Zde je důležité zmínit, že původní soubor nebo adresář nebude v důsledku odstranění odkazu nijak ovlivněn.
V terminálu spusťte příkaz:
$ rm ~/symlinks/link_1
Chcete-li také získat podrobné informace o postupu, přidejte do příkazu parametr -v
:
$ rm -v ~/symlinks/link_1
Kromě toho můžete zkontrolovat, zda odkaz z adresáře zmizel. K tomu použijte dříve popsaný příkaz ls
.
Nyní víte, jak odstranit symbolický odkaz v systému Linux.
Nástroj unlink
je určen k odstraňování souborů ze souborového systému Linux. Stačí mu zadat pouze cestu k odkazu:
$ unlink ~/symlinks/link_1
V rámci daného úkolu pracují rm a unlink téměř identicky. Nyní přejděme k poslední metodě.
Pomocí příkazu find
můžete vyhledávat a odstraňovat odkazy v daném adresáři. To znamená, že nemusíte dodatečně používat příkaz ls
.
Na rozdíl od předchozích dvou možností má poměrně pokročilé funkce, například nastavení kritérií vyhledávání. Ani z tohoto důvodu však není syntaxe tak jednoduchá.
Pro vyhledávání je třeba zadat adresář a několik parametrů:
$ find ~/symlinks/ -type l -print
Parametr -type l
je potřeba pro výběr pouze symbolických odkazů, parametr -print
pro vypsání celého názvu. A pomocí parametru -maxdepth
můžete určit hloubku vyhledávání podle vnořených adresářů. Pokud zadáte hodnotu 1, bude vyhledávání probíhat pouze v samotném adresáři, bez příloh:
$ find ~/symlinks/ -maxdepth 1 -type l -print
Jakmile je v adresáři mnoho odkazů, můžete zadat vyhledávací vzor pro příkaz find
. Jako příklad uveďme situaci, kdy chceme najít pouze skryté odkazy s datem poslední změny ne starším než 30 dní:
$ find ~/data/ -type l -name ".*" -mtime -30 -print
Byla přidána dvě kritéria:
-name
- vyhledávání podle názvu
.-mtime
- podle času změny.Všechny nalezené odkazy lze odstranit podle zadaného vzoru. Pro tento účel je parametr -print
nahrazen parametrem -delete
:
$ find ~/data/ -type l -name ".*" -mtime -30 -delete
Na závěr návodu se věnujme vyhledávání a mazání nefunkčních odkazů, které nikam nevedou, například po smazání původního souboru nebo adresáře. K tomuto účelu je vhodný parametr -xtype l
. Pro výstup není vyžadován parametr -print
:
$ find ~/broken_links/ -xtype l
Výsledkem bude zobrazení všech nefunkčních odkazů v terminálu. Chcete-li je odstranit, přidejte na konec příkazu parametr -delete
:
$ find ~/broken_links/ -xtype l -delete
Tím je návod na odstranění odkazu v Linuxu kompletní.