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

5

No importa cómo intente crear un enlace simbólico, OS X se niega a jugar y en su lugar crea un alias. He probado varias herramientas y también a través del terminal con el comando ln .

Estoy en una instalación nueva y antes utilizaba el comando ln . ¿Alguna idea de qué pasa?

Gracias, Will

    
pregunta user68523 25.01.2014 - 00:11

4 respuestas

12

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 ingresar en el directorio que acabamos de crear ( cd [directory] ).

cd ~
mkdir directory
cd directory

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

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

Ahora, intente crear un enlace fijo, 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 el Finder con open . y cree un alias.

En el emulador de terminal que abrió antes, otro ls debería obtener 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 resultar en esto:

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

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

En la GUI del Finder, no hay manera de decir que un enlace duro no es más que un archivo.

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

Cuando intentas esto, ¿qué obtienes exactamente?

    
respondido por el Tony Williams 25.01.2014 - 06:00
1

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

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

Un enlace simbólico no se puede crear directamente en una ventana del Finder (de manera indirecta, quizás llamando a un script de 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 bash:

$ alias listall=ls -al'

Esto define un apodo listall para que el comando ls -al muestre todos los archivos en el directorio actual. En este contexto, 'alias' describe los apodos del comando: alias es en realidad un comando incorporado en el shell bash para crear dichos apodos.

No soy un experto en el sistema de archivos OS X, solo soy usuario y programador de secuencias de comandos, pero según lo que he leído, la razón por la que un alias del Finder no se interrumpe 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á apuntando hacia él, mientras que un enlace simbólico se romperá porque usa la ruta del archivo del destino.

    
respondido por el ramius 31.12.2014 - 23:28
0

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

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

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

  • Enlaces simbólicos (enlaces simbólicos para abreviar) son shortcuts 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.

  • Hard Links son muy similares a los alias en el Finder, excepto que no contienen la ruta al archivo original. Los enlaces duros aparecen como archivos regulares dentro del Finder; no sabrá que no está trabajando con el archivo original, sino con el archivo vinculado. Los enlaces duros son lo que ln crea de forma predeterminada cuando omite el indicador -s .

Para más detalles, he escrito sobre esto más a fondo en esta respuesta .

La línea de fondo aquí es que solo podrá crear enlaces simbólicos y enlaces duros en el Terminal (entorno UNIX de OS X) pero usarlos globalmente. Solo podrá crear y utilizar alias en el Finder. (IMO) Debido a esto, me mantengo alejado de los alias y utilizo los enlaces simbólicos casi exclusivamente.

    
respondido por el Allan 06.09.2016 - 13:55
-1

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

    
respondido por el John Clark 18.02.2015 - 10:39

Lea otras preguntas en las etiquetas