GNU/Linux >> Znalost Linux >  >> Linux

Proč můj symbolický odkaz nefunguje?

Symbolické odkazy mají tendenci mít rády úplné cesty nebo relativní k odkazu, jinak mohou často hledat file-1.txt lokálně (kupodivu).

Přejděte na proper a spusťte ls -l a můžete vidět, že symbolický odkaz hledá actual/file-1.txt , když by to mělo být ../actual/file-1.txt .

Takže máte dvě možnosti:

  1. Uveďte úplnou cestu

    ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
    
  2. Přejděte do složky, ve které má být odkaz, a odkazujte odtud

    cd proper
    ln -s ../actual/file-1.txt ../actual/file-2.txt ./
    

Upravit :Tip pro uložení psaní.

Můžete udělat ln -s ~/actual/file-{1,2}.txt ~/proper

Položky ve složených závorkách jsou nahrazeny a umístěny za sebou, čímž vznikne příkaz

    ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
    

který spojuje oba soubory s cílovým adresářem. Ušetří některé hlavní psaní, když se dostanete dále v shellu.


Problémem je použití relativních cest. Pokud zadáte vytvoření odkazu s úplnou explicitní cestou, bude to fungovat.

$ ln -s ~/actual/file1.txt ~/actual/file2.txt ~/proper/

$ správná kočka/soubor1.txt

soubor 1

$

Váš příklad vytváří odkazy v proper které hledají podadresář pojmenovaný skutečný v aktuálním adresáři, nikoli váš zamýšlený nadřazený adresář.


Symbolické odkazy mohou být složité. Symbolický odkaz je v podstatě soubor, který obsahuje název souboru/cestu k jinému souboru (a který je označen pro zvláštní zacházení). Pokud cesta v souboru odkazu začíná „/ “, pak se s ním zachází jako s absolutním názvem cesty a věci jsou poměrně jednoduché. Pokud nezačíná lomítkem, je považováno za relativní název cesty – vzhledem k adresáři, kde je odkaz umístěn. (To platí bez ohledu na to, zda název obsahuje lomítka nebo ne.) Vytvořili jste tedy proper/file–1.txt jako odkaz na „actual/file–1.txt “, a když jste se k němu pokusili získat přístup, systém se pokusil o přístup k proper/actual/file–1.txt . Měl jsi to říct

ln –s  ../actual/file–1.txt  ../actual/file–2.txt  proper

Mimochodem, nepotřebovali jste touch příkazy. echo "file 1" > actual/file–1.txt stačí k vytvoření actual/file–1.txt .


Linux
  1. Proč Lsdel v Debugfs nefunguje?

  2. Proměnné prostředí v symbolických odkazech

  3. symbolický odkaz:najít všechny soubory, které odkazují na tento soubor

  1. Proč není Nullglob výchozí?

  2. Převést pevný odkaz na symbolický odkaz?

  3. proč linux bridge nefunguje

  1. Symbolický odkaz při změně uživatele nefunguje podle očekávání?

  2. Proč „ukončit &“ nefunguje?

  3. Jak komprimovat symbolický odkaz?