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

  • ¿Cómo configuro Python3.3 y Sublime Text 2 correctamente en OS X 10.8.2?
  • Faltan files .Bash en ~ /
  • Cómo puedo decirle a Firewall que permita conexiones entrantes para Python.app ejecutando Django
  • Script de actualización automática
  • ¿Cómo puedo deshacer "export PATH = '/ usr / local / bin: $ PATH' >> ~ / .bash_profile"
  • La gem Nokogiri no se instala en OS X Mavericks
  •  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í?

  • ¿Qué herramientas existen para cambiar el nombre (truncar) lotes de files en OS X?
  • ¿Por qué el nombre de host en el intérprete de commands del shell es "MacBook-2" en lugar de "MacBook"?
  • Cómo cambiar la fuente de respaldo pnetworkingeterminada (para idiomas que no sean latinos)
  • El nombre de la máquina del indicador de terminal Mac se convierte en "bogon" después de usar traceroute
  • ¿Cómo enmascar caracteres "prohibidos" en passwords en el command mount?
  • ¿Hay alguna forma de lanzar una instancia separada de Google Chrome con un ícono personalizado?
  • 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).