¿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:

  • Significado de "./" en la terminal Mac
  • ¿Cómo puedo restablecer mi configuration de bash?
  • Instalar e importar packages de sitio para Python 2 y 3 en Mac
  • Habilitar la function ~ / .bashrc para configurar un entorno
  • Obtener files, todos a la vez, desde una página web utilizando curl
  • Uso de expresiones regulares en Mac OS X: ¿por qué tengo que agregar \ in {3, 5} ==> \ {3, 5 \} ...?
  •  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í?

  • ¿Hay una utilidad de command-line para mostrar una cadena o una image en la barra de estado en Mavericks?
  • ¿Cómo abre Sublime el file con cmd y hace clic en su ruta en Terminal?
  • iTerm2 y Terminal muestran el código de serie de mi Mac
  • Crear un command de Terminal para abrir el file con Chrome
  • ¿Cómo habilitar Maven autocomplete en la command-line de Mac OS X?
  • Detuve Terminal con "killall -STOP Terminal", ¿CÓMO? ¿Volver a cerrarla?
  • 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).