Estoy tratando de crear un enlace simbólico en mi directorio de inicio que apunte a un directorio en mi HDD externo.
Funciona bien cuando lo especifico así:
cd ~
ln -s /run/media/name/exhdd/Data/ Data
Sin embargo, crea un enlace defectuoso cuando intento esto:
cd /run/media/name/exhdd
ln -s Data/ ~/Data
Esto crea un enlace en el que no puedo cd
entrar.
Cuando lo intento, bash se queja:
bash: cd: Data: Too many levels of symbolic links
El enlace simbólico de datos en mi casa también está coloreado en rojo cuando ls
está configurado para mostrar la salida en color.
¿Por qué está pasando esto? ¿Cómo puedo crear un enlace de esa manera? (Quiero crear un enlace simbólico a un directorio en mi directorio de trabajo en otro directorio).
Editar: de acuerdo con esta respuesta de StackOverflow, si el segundo argumento (en mi caso, que sería ~ / Data) ya existe y es un directorio,
ln
creará un enlace simbólico al destino dentro de ese directorio.
Sin embargo, estoy experimentando el mismo problema con:
ln -s Data/ ~/
cd ~
suele ser lo mismo quecd
.ls -l ~/Data
te habría ayudado a ver qué estaba mal con el enlace "rojo".cat
ella, pero me olvidé de lo que fue el resultado ... (no estoy en casa en el momento en ellas.)/run/media/name/exhdd/Data/
paraData
luego usar lo siguienteln -s /run/media/name/exhdd/Data/* Data
Respuestas:
Esto es lo que está pasando. Si crea un enlace simbólico con una ruta relativa, el enlace simbólico será relativo. Los enlaces simbólicos solo almacenan los caminos que les das. Nunca resuelven caminos a caminos completos. Corriendo
crea un enlace simbólico llamado
ls2
en el/usr/bin
quels
(a saber./usr/bin/ls
) en relación con el directorio que el enlace simbólico está en (/usr/bin
). El comando anterior crearía un enlace simbólico funcional desde cualquier directorio.Si movió el enlace simbólico a un directorio diferente, dejaría de apuntar al archivo en
/usr/bin/ls
.Está creando un enlace simbólico que apunta
Data
y lo nombraData
. Se está apuntando a sí mismo. Tienes que hacer un enlace simbólico con la ruta absoluta del directorio.fuente
Estaba teniendo el mismo problema. Google llevó a esta respuesta, pero la solución más simple no está documentada aquí:
-T hace el truco
hombre ln:
Simplemente agregue esto aquí para que cualquier persona con la misma pregunta pueda encontrar esto :)
fuente
ln
El comportamiento de las rutas relativas es poco intuitivo. Para restaurar la cordura, usa la-r
bandera.Explicación:
Lo que significa es que
ln
hará lo que esperas. Tendrá en cuenta en qué directorio se encuentra, en qué directorio se encuentra el objetivo, y construirá una ruta relativa al directorio en el que estará el enlace. El comportamiento predeterminado (sin-r
) es interpretar el primer parámetro (objetivo) literalmente , en en cuyo caso debe construir la ruta usted mismo para que sea válida en el directorio del enlace.Alternativamente, use una ruta absoluta, como lo menciona @SmithJohn
o
fuente
Simplemente puede crear un enlace para una carpeta. Mira mi comando
ln -s / home / targatedfolder / var / www / html / link_name
fuente