Cree un enlace simbólico en el Finder de Mac OS X

39

¿Hay alguna manera de obtener la misma funcionalidad que el comando unix ln -sen Mac OS X Finder (OS 10.5)? Quiero poder crear enlaces simbólicos mientras trabajo en las ventanas del Finder sin abrir el Terminal.

Tenga en cuenta que el Make Aliascomando en Finder no es lo que quiero porque esos alias no se pueden navegar en la Terminal (pero los enlaces creados con ln -sse pueden navegar tanto por la Terminal como por el Finder).

Michael Schneider
fuente
macOS realmente debería proporcionar esto como una función opcional para usuarios avanzados.
Andy

Respuestas:

16

¿Qué pasa con la creación de enlaces simbólicos en el Finder a través de AppleScript ?

Aquí está el script más relevante en ese enlace:

on run
    open {choose file with prompt "Choose a file to create a symbolic link:" without invisibles}
end run

on open the_files
    repeat with i from 1 to (count the_files)
        try
            set posix_path to POSIX path of (item i of the_files)
            if posix_path ends with "/" then set posix_path to text 1 thru -2 of posix_path
            do shell script "ln -s " & quoted form of posix_path & " " & quoted form of (posix_path & ".sym")
        end try
    end repeat
end open

Simplemente péguelo en AppleScript Editor y guárdelo como una aplicación . Luego puede arrastrarlo sobre la barra de herramientas de su buscador o vincularlo en el dock .

nuc
fuente
2
El segundo comentario en ese enlace, dejado por jonn8n, da exactamente la funcionalidad que estaba buscando. Aunque, estoy un poco sorprendido de que esto no sea posible dentro del Finder.
Michael Schneider
Su enlace está podrido
Ben Leggiero
27

SymbolicLinker hará exactamente lo que estás buscando, y es gratis.

texto alternativo

Arathorn
fuente
3
FWIW, SymbolicLinker todavía funciona en Mavericks 10.9.3.
Martineau
1
Tu enlace está muerto. ¿Se vinculó a esto? macupdate.com/app/mac/10433/symboliclinker
Ben Leggiero
SymbolicLinker está muerto, al menos a partir de Mavericks.
Dave Land
Solo una nota para confirmar que esto todavía funciona en Mojave. También vale la pena señalar que la pestaña Versiones en el sitio vinculado de Github tiene un .dmg con el servicio y las instrucciones de instalación para guardar la construcción usted mismo.
Robin Macharg
2

Un applecript en el enlace proporcionado por el usuario nuc respondió mi pregunta. Aquí está el applecript reproducido en caso de que ese enlace desaparezca.

Preferí el guión dado por el comentarista jonn8n, que también se reprodujo como artículo de Macworld .

on run
    open {choose file with prompt ¬
        "Choose a file to create a symbolic link:" without invisibles}
end run
on open the_files
    repeat with i from 1 to (count the_files)
        try
            set posix_path to POSIX path of (item i of the_files)
            if posix_path ends with "/" then set posix_path to ¬
                text 1 thru -2 of posix_path
            do shell script "ln -s " & quoted form of posix_path ¬
                & " " & quoted form of (posix_path & ".sym")
        end try
    end repeat
end open

Lo guardé como una aplicación usando Script Editor y arrastré la aplicación a la barra lateral del Finder para que ahora pueda crear enlaces simbólicos arrastrando archivos o carpetas al icono de la aplicación.

Michael Schneider
fuente
1

Path Finder agrega esto a su Finder, y agrega muchas más funciones.

Khaled Kammar
fuente
1

Use Automator.app para crear un Servicio que ejecute un script bash. Esto es más simple que AppleScript y más confiable que la instalación de software de terceros.

for f in "$@"
do
    ln -s "$f" "$f.symlink"
done

Hacer flujo de trabajo de enlace simbólico

Luego puede acceder al comando Crear enlace simbólico en el menú Servicios :

ingrese la descripción de la imagen aquí

El resultado:

ingrese la descripción de la imagen aquí

Quinn Commandado
fuente
0

Una posible mejora en este script sería cambiar el controlador de ejecución para usar los archivos seleccionados actualmente del Finder, de la siguiente manera:

on run
    tell application "Finder" to set sel to selection
    open sel
end run
on open the_files
    repeat with i from 1 to (count the_files)
        try
            set posix_path to POSIX path of (item i of the_files as alias)
            if posix_path ends with "/" then set posix_path to ¬
                text 1 thru -2 of posix_path
            try
                do shell script "ln -s " & quoted form of posix_path ¬
                    & " " & quoted form of (posix_path & ".sym")
            on error
                try
                    do shell script "ln -s " & quoted form of posix_path ¬
                        & " " & quoted form of (posix_path & ".sym") with administrator privileges

                end try
            end try
        end try
    end repeat
end open

También puede editar [aplicación] /Contents/Info.plist para agregar

<key>LSUIElement</key>
<true/>

Justo antes del último </dict>. Esto significaría que la aplicación se ejecutará en segundo plano y no aparecerá al frente al hacer clic en ella.

Benjamin Dobson
fuente
0

Además, en Snow Leopard, donde SymbolicLinker no funciona, puede crear un Servicio con Automator para ejecutar el comando Terminal o AppleScript para crear un enlace simbólico.

beiju
fuente
1
En realidad, SymbolicLinker funciona en Snow Leopard desde, al menos, diciembre de 2009.
cregox
0

Uno más como:

tell application "Finder"
    repeat with f in (get selection)
        set p to POSIX path of (f as text)
        set p2 to POSIX path of (desktop as text) & name of f
        do shell script "ln -s " & quoted form of p & " " & quoted form of p2
    end repeat
end tell
Lri
fuente
-1

Intente buscar aquí: http://www.techiecorner.com/528/how-to-create-shortcut-in-mac-os-x/

Esto ya está integrado en OSX si presiona la tecla de control cuando hace clic en algo.

Ben G
fuente
55
Solo que no se crea un enlace simbólico. Puede cdingresar a un enlace simbólico a una carpeta, pero no a un alias del Finder. Lea la pregunta, ya dice esto. (Moderadores: es posible que queramos dejar esta no respuesta para evitar más respuestas en esta línea)
Daniel Beck
55
@daniel Dudo que ayude mucho a prevenir, ya que las respuestas en esta línea generalmente provienen de personas que no leen. : P
cregox