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 ln
comando.
Estoy en una instalación nueva y usar el ln
comando funcionó bien antes. ¿Alguna idea de lo que pasa?
gracias
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 ls
deberí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:
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 ls
comando nos dice a dónde apunta.
Cuando pruebas esto, ¿qué obtienes exactamente?
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 listall
para el comando ls -al
para enumerar todos los archivos en el directorio actual. En este contexto, 'alias' describe apodos de comandos; alias
en 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 ln
crean de forma predeterminada cuando omites la -s
bandera.
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é.
Matthieu Riegler
usuario68523
ln -s <source> <dest>
y herramientas como: seiryu.home.comcast.net/~seiryu/symboliclinker.htmlmmmmmm
usuario68523
itos67
ln
sea realmenteln
. En la terminal, ejecutetype ln
para asegurarse de que sea/bin/ln
.ThomasW