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:
-
Uveďte úplnou cestu
ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
-
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
.