OS X no creará ningún enlace simbólico, en su lugar crea alias

No importa cómo intente crear un enlace simbólico, OS X se niega a seguir el juego y en su lugar crea un alias. He probado varias herramientas y también a través de la terminal usando el lncomando.

Estoy en una instalación nueva y usar el lncomando funcionó bien antes. ¿Alguna idea de lo que pasa?

gracias

¿Qué comando probaste exactamente?
@MatthieuRiegler He probado ln -s <source> <dest>y herramientas como: seiryu.home.comcast.net/~seiryu/symboliclinker.html
Solo sabe cómo hacer enlaces, los alias son solo de las herramientas de Apple. ¿Cómo sabes que es un alias?
@Mark Finder lo clasifica como un alias y si ejecuto ls -la también lo llama un alias.
Asegúrate de que lnsea realmente ln. En la terminal, ejecute type lnpara asegurarse de que sea /bin/ln.
Hay buenas respuestas a esta pregunta en superusuario: superuser.com/questions/24095/…

Respuestas (4)

Probemos algunos experimentos y veamos algunas cosas.

En un emulador de terminal, como Terminal.app en /Aplicaciones/Utilidades, vaya a su directorio de inicio ( cd ~) y cree un directorio ( mkdir [directory]).

Asegúrate de ir al directorio que acabamos de crear ( cd [directory]).

cd ~
mkdir directory
cd directory

Después de eso, haga un archivo; un archivo de texto simple hará:

echo "This is a simple text file" > originalfile.txt
ls -l@

Ahora, intente crear un enlace duro, como este:

/usr/bin/ln originalfile.txt hardlink.txt

Luego, intente crear un enlace simbólico, como este:

/usr/bin/ln -s originalfile.txt symboliclink.txt

Ahora, abra el directorio en Finder con open .y cree un alias.

En el emulador de terminal que abriste antes, otro lsdebería darnos esto:

Testarossa:test tonyw$ ls -l@
total 2528
-rw-r--r--  2 tonyw  staff      19 25 Jan 15:51 file.txt
-rw-r--r--@ 1 tonyw  staff  426048 25 Jan 15:52 file.txt alias
com.apple.FinderInfo        32 
com.apple.ResourceFork  850686 
-rw-r--r--  2 tonyw  staff      19 25 Jan 15:51 hard.txt
lrwxr-xr-x  1 tonyw  staff       8 25 Jan 15:53 symbolic.txt -> file.txt

La GUI del Finder también debería dar como resultado esto:

La GUI del Finder con el archivo original, un enlace físico y un enlace simbólico.

Tenga en cuenta que la GUI del Finder muestra un enlace simbólico como un alias.

Un enlace simbólico no es lo mismo que un alias. Un alias real tiene más atributos que un enlace simbólico.

En la interfaz gráfica de usuario del Finder, no hay forma de saber que un enlace físico es algo más que un archivo.

Para cualquier enlace simbólico, hay una 'l' en el extremo izquierdo de los atributos, y el lscomando nos dice a dónde apunta.

Cuando pruebas esto, ¿qué obtienes exactamente?

Entonces, para aprovechar esta idea, ¿hay alguna forma en que podamos obligar a OSX/Finder a volver a etiquetar los enlaces simbólicos como tales en lugar de como alias?
...no hay forma de saber que un enlace fijo es algo más que un archivo. Eso es porque no hay diferencia. Cuando creó originalfile.txt, estaba creando un archivo con un enlace fijo, y cuando creó hardlink.txt, ese fue un segundo enlace fijo al mismo archivo. No hay forma (en el buscador, en el símbolo del sistema o en cualquier otro lugar) de saber qué nombre era el original y cuál es el "enlace". Ambos son enlaces . Cada archivo tiene al menos un enlace duro.

OS X puede crear ambos, pero de diferentes maneras. Como parece estar usando la palabra alias , es un acceso directo de archivo (o directorio) que se creó en Finder para cualquier cosa que vea allí, mientras que un enlace simbólico (enlace simbólico) se puede crear en una instancia de shell iniciada por su aplicación de terminal por usando el comando:

ln -s <source file path><target file path>

No se puede crear un enlace simbólico directamente en una ventana del Finder (quizás indirectamente llamando a un script AppleScript desde un script de shell o viceversa).

Pero hay una ambigüedad aquí porque hay otro tipo de alias, que es un apodo definido por el usuario que puede dar a una secuencia de comandos de shell cuando abre una sesión de terminal. Por ejemplo, en una ventana de shell de bash:

$ alias listall=ls -al`

Esto define un apodo listallpara el comando ls -alpara enumerar todos los archivos en el directorio actual. En este contexto, 'alias' describe apodos de comandos; aliasen realidad, es un comando integrado de shell bash para crear tales apodos.

No soy un experto en el sistema de archivos de OS X, solo un usuario y creador de secuencias de comandos, pero por lo que he leído, la razón por la cual un alias de Finder no se rompe en OS X es porque contiene un número de serie único para su archivo de destino (llamado un número de inodo, que existe para cada archivo y directorio) que es independiente de su ruta de archivo. Esto significa que si mueve el destino a otro directorio, el alias seguirá apuntándolo, mientras que un enlace simbólico se rompería porque usa la ruta del archivo del destino.

No puede crear de forma nativa enlaces simbólicos (enlaces simbólicos) en Finder , solo alias. Sin embargo, puede usar AppleScript para crear enlaces simbólicos si esto es lo que finalmente necesita.

Para entender por qué esto es así, debemos entender la diferencia entre alias, enlaces simbólicos y enlaces duros:

  • Los alias son convenciones de Finder ; lo que significa que solo funcionan dentro de Finder y no en el entorno UNIX de OS X. Son pequeños archivos de datos y su shell (bash, sh, zsh, etc.) no sabe cómo interpretarlos.

  • Los enlaces simbólicos (enlaces simbólicos para abreviar) son accesos directos que forman parte del sistema de archivos *NIX. Finder los trata como cuasi alias, puede verlos y usarlos, pero no contienen ninguno de los metadatos adicionales que contienen los alias de Finder.

  • Los enlaces duros son bastante similares a los alias en Finder, excepto que no contienen la ruta al archivo original. Los enlaces duros aparecen como archivos normales dentro del Finder; no sabrá que no está trabajando con el archivo original, sino con el vinculado. Los enlaces duros son los que se lncrean de forma predeterminada cuando omites la -sbandera.

Para obtener más detalles, he escrito sobre esto con más profundidad en esta respuesta .

La conclusión aquí es que solo podrá crear enlaces simbólicos y enlaces duros en Terminal (entorno UNIX de OS X) pero usarlos globalmente. Solo podrá crear y usar alias dentro de Finder. (OMI) Debido a esto, me mantengo alejado de los alias y uso enlaces simbólicos casi exclusivamente.

Tuve este problema. Intenté guardar el enlace en una carpeta diferente. Con un poco de ensayo y error funcionó. No tengo idea de por qué.