¿Cómo puedo convertir enlaces simbólicos relativos a enlaces simbólicos absolutos recursivamente en bash?convertir enlaces simbólicos relativos a enlaces simbólicos absolutos
Respuesta
ln -sf "$(readlink -f "$link")" "$link"
+1, no sabía acerca de las opciones de canonicalización para readlink! – Flexo
Puede hacer esto para todos los enlaces simbólicos en el directorio de trabajo actual usando: 'find ./ -type l -execdir bash -c 'ln -sfn" $ (readlink -f "$ 0") "" $ 0 "' {} \ ; ' –
Para los enlaces simbólicos que apuntan a directorios, esto falla: crea nuevos enlaces simbólicos con el mismo nombre dentro del directorio (por ejemplo, para un enlace simbólico foo -> ../foo obtienes foo/foo ->/abs/ruta/a/foo) . –
Sólo en caso de que alguien en busca de operación inversa: la conversión de los enlaces absolutos al respecto:
usando Python:
find . -lname "`pwd`*" -exec sh -c 'ln -snvf `python -c "from os.path import *; print relpath(\"$(readlink {})\",dirname(\"{}\"))"` {}' \;
Usando sólo bash y sed:
find . -lname "`pwd`/*" -depth 1 -exec sh -c 'ln -snvf `echo $(readlink {}) | sed "s|\`pwd\`|.|"` {}' \;
find . -lname "`pwd`/*" -depth 2 -exec sh -c 'ln -snvf `echo $(readlink {}) | sed "s|\`pwd\`|..|"` {}' \;
find . -lname "`pwd`/*" -depth 3 -exec sh -c 'ln -snvf `echo $(readlink {}) | sed "s|\`pwd\`|../..|"` {}' \;
etc....
Esto convertiría todos los enlaces absolutos en los subdirectorios en unos relativos.
También hay un paquete de enlaces simbólicos disponible: 'symlinks -a/path/to/modify' http://linux.die.net/man/8/symlinks – pztrick
Desafortunadamente no está disponible en algunos sistemas operativos. ; ( –
Puede descargar el archivo fuente de Debian y simplemente ejecutar 'gcc symlinks.c -o/usr/local/bin/symlinks'. No parece depender de nada más. Http://http.debian.net/ debian/pool/main/s/symlinks/symlinks_1.4.orig.tar.gz – pztrick
Sobre la base de la respuesta de @ thkala, he añadido esto a mi .bashrc:
function lnabs {
#http://stackoverflow.com/questions/4187210/convert-relative-symbolic-links-to-absolute-symbolic-links
ln -sf "$(readlink -f "$1")" "$*"
}
- 1. mod_xsendfile con enlaces simbólicos
- 2. Ignorar enlaces simbólicos en .gitignore
- 3. Java 1.6 - determinar enlaces simbólicos
- 4. enlaces simbólicos Mercurial en Windows
- 5. realpath() sin resolver enlaces simbólicos?
- 6. ¿Empaqueta enlaces simbólicos a través de rpmbuild?
- 7. ¿Cómo obtengo una lista de enlaces simbólicos, excluyendo enlaces rotos?
- 8. Comportamiento de cd/bash en enlaces simbólicos
- 9. Eliminación de enlaces simbólicos en PHP
- 10. Enlaces simbólicos en TFS 2010 Source Control?
- 11. subrepo, hg clon y enlaces simbólicos
- 12. Variables de entorno en enlaces simbólicos
- 13. Conexiones NTFS vs. Enlaces simbólicos (para directorios)
- 14. reparar enlaces simbólicos rotos/reinstalar php5
- 15. ¿Cómo copio enlaces simbólicos en Perl?
- 16. Agregar enlaces simbólicos al repositorio git
- 17. Limpiando los enlaces simbólicos de Magento Modman
- 18. Enlace duro y enlaces simbólicos en Unix
- 19. ¿Cómo forzar a Java 7 a crear "enlaces simbólicos de directorios" en Windows en lugar de "enlaces simbólicos de archivos"?
- 20. ¿Cómo hacer que Find.find de Ruby siga los enlaces simbólicos?
- 21. Cómo copiar solo enlaces simbólicos a través de rsync
- 22. Hacer enlaces relativos a las absolutas
- 23. listFiles() ¿El archivo no funciona en enlaces simbólicos?
- 24. Control del tratamiento de eGit de enlaces simbólicos
- 25. ¿Script Bash para crear enlaces simbólicos de forma segura?
- 26. Encontrando bibliotecas relativas al utilizar enlaces simbólicos al rubí ejecutables
- 27. Resolver enlaces simbólicos con el sistema de archivos boost
- 28. Eliminación de una carpeta que contiene enlaces simbólicos
- 29. Crear enlaces simbólicos en el servidor sin SSH disponible?
- 30. Configurar enlaces simbólicos para un solo directorio en Tomcat
¿Qué quiere decir por "recursiva"? – thkala