¿Cómo get la ruta completamente resuelta de un enlace simbólico en la Terminal?

Tengo un lío ennetworkingado de instalaciones de Python en mi computadora portátil. Estaba viendo los ejecutables en /usr/local/bin y todos son enlaces simbólicos a ../../../Library......

Hay un comportamiento extraño que rodea esto. Si hago ls -lhaG veo ---> y la ruta relativa a la derecha de los enlaces simbólicos:

  • Hizo `man ls> temp.txt`. El file de text de salida está dañado
  • ¿Cómo agregar MySQL a la variable $ PATH para resolver "mysql: command no encontrado"?
  • Buscar usuario conectado y directory de inicio de networking con un script bash
  • Abra un file IPA desde la línea de command
  • Script Bash con problemas de carpeta de locking para files grandes
  • ¿Cómo cambiar el indicador bash de mc (command de medianoche) en OS X?
  •  lrwxr-xr-x 1 root wheel 69B Dec 7 22:29 python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.1/bin/python3 

    Sin embargo, parece que no puedo get ninguna de las herramientas de command-line para resolver esa ruta y mostrar la ruta real a python3. He encontrado algunas cositas aquí y allá sobre el uso de pwd -P y la utilidad de find para hacer esto. El problema es que estos no parecen funcionar en OS X de la forma en que las personas los describen trabajando en Linux (es decir, obteniendo la ruta completa al enlace simbólico). Simplemente imprimen la ruta de enlaces simbólicos para mí:

     FantasticMrFox:bin robert$ pwd -P python3 /usr/local/bin FantasticMrFox:bin robert$ find `pwd -P` -name python3 /usr/local/bin/python3 

    ¿Alguna idea sobre lo que está pasando aquí?

  • Usar salida de cat en osascript en terminal
  • El comportamiento de desplazamiento de MacOS Sierra en Terminal es realmente extraño
  • El command de assembly no puede contener caracteres chinos
  • cómo ejecutar mkdir en el directory / home /
  • ¿Cómo borro mi historial de Bash en OS X?
  • Un ligero server SQL para servir contenido .sql
  • 4 Solutions collect form web for “¿Cómo get la ruta completamente resuelta de un enlace simbólico en la Terminal?”

    Creo que pwd -P y readlink serán tus amigos para esta tarea.

    " ¿Cómo puedo get el comportamiento del readlink -f de GNU en una Mac? " Es un recurso útil.

    pwd -P solo funciona si estás dentro del directory de enlace simbólico:

     14:07:13 jason@mac ~ $ cd bin 14:08:08 jason@mac bin $ pwd -P /Users/jason/Applications 

    readlink funciona especificando el objective (por lo tanto, se puede usar contra files):

     14:09:03 jason@mac ~ $ readlink bin Applications 14:09:34 jason@mac ~ $ readlink /var private/var 

    La salida de readlink parece ser relativa al padre del objective especificado.

    Ej: El padre de /var es / , entonces private/var es correcto, relativo a / . Según mi ejemplo anterior de bin -> Applications , ambos están en mi Directorio de inicio, sin importar dónde lo ejecute, el resultado es el mismo.

    Esto se resuelve recursivamente y devuelve una ruta absoluta:

     $ python >>> import os >>> os.path.realpath("/usr/local/bin/python3") 

    O la versión no interactiva:

     python -c "import os; print(os.path.realpath('/usr/local/bin/python3'))" 

    Tal vez esta discusión sobre Stack Overflow sea de ayuda: Cómo resolver enlaces simbólicos en un script de shell. En particular, considere esta respuesta .

    Puede usar readlink -f . Recount a través de todos los enlaces. Supongamos que el enlace es a una ruta que es más un enlace. Te gustaría tener el path absoluto final.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).