A los enlaces simbólicos les suelen gustar las rutas completas o relativas al enlace; de lo contrario, a menudo pueden estar buscando file-1.txt
localmente (por extraño que parezca).
Navega a proper
y ejecuta ls -l
y puede ver que el enlace simbólico está buscando actual/file-1.txt
, cuando debería ser ../actual/file-1.txt
.
Así que tienes dos opciones:
-
Dar la ruta completa
ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
-
Navegue a la carpeta en la que desea que esté el enlace y enlace desde allí
cd proper ln -s ../actual/file-1.txt ../actual/file-2.txt ./
Editar :Una sugerencia para evitar escribir.
Podrías simplemente hacer ln -s ~/actual/file-{1,2}.txt ~/proper
Los elementos entre llaves se sustituyen y se colocan uno tras otro, creando el comando
ln -s ~/actual/file-1.txt ~/actual/file-2.txt ~/proper
que vincula ambos archivos al directorio de destino. Ahorra algo de escritura importante a medida que avanza en el shell.
El problema es el uso de rutas relativas. Si especifica la creación de su enlace con la ruta explícita completa, funciona.
$ ln -s ~/actual/archivo1.txt ~/actual/archivo2.txt ~/propio/
$ gato propiamente dicho/archivo1.txt
archivo 1
$
Tu ejemplo crea enlaces en proper
que buscan un subdirectorio llamado actual bajo el directorio actual, en lugar de su padre previsto de ambos.
Los enlaces simbólicos pueden ser complicados. En esencia, un enlace simbólico es un archivo que contiene un nombre de archivo/ruta para otro archivo (y que está marcado para un tratamiento especial). Si el nombre de ruta en el archivo de enlace comienza con '/
', entonces se trata como un nombre de ruta absoluto, y las cosas son bastante sencillas. Si no comienza con una barra inclinada, se trata como un nombre de ruta relativo, relativo al directorio donde se encuentra el enlace. (Esto es cierto ya sea que el nombre contenga o no barras). Entonces, creó proper/file–1.txt
como enlace a “actual/file–1.txt
”, y cuando intentó acceder a él, el sistema intentó acceder a proper/actual/file–1.txt
. Deberías haber dicho
ln –s ../actual/file–1.txt ../actual/file–2.txt proper
Por cierto, no necesitabas el touch
comandos echo "file 1" > actual/file–1.txt
es suficiente para crear actual/file–1.txt
.