it-swarm-eu.dev

Crea un collegamento simbolico nel Finder di Mac OS X.

Esiste un modo per ottenere la stessa funzionalità del comando unix ln -s nel Finder di Mac OS X (OS 10.5)? Voglio essere in grado di creare collegamenti simbolici mentre lavoro nelle finestre del Finder senza aprire il Terminale.

Nota che il comando Make Alias nel Finder non è quello che voglio perché quegli alias non possono essere navigati nel Terminale (ma i collegamenti creati con ln -s possono essere navigati sia dal Terminale che dal Finder).

39

Che ne pensi di questo che crea collegamenti simbolici nel Finder tramite AppleScript ?

Ecco lo script più pertinente in questo link:

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

Basta incollarlo in AppleScript Editor e salvarlo come un'applicazione . Quindi puoi trascinarlo sulla barra degli strumenti del Finder o collegarlo al dock .

16
nuc

SymbolicLinker farà esattamente quello che stai cercando, ed è gratuito.

alt text

26
arathorn

Un applescript al link fornito dall'utente nuc ha risposto alla mia domanda. Ecco il codice di riproduzione riprodotto nel caso in cui quel collegamento scompaia.

Ho preferito la sceneggiatura fornita dal commentatore jonn8n, che è stato anche riprodotto come articolo di 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

L'ho salvato come applicazione utilizzando Script Editor e ho trascinato l'applicazione nella barra laterale del Finder, così ora posso creare collegamenti simbolici trascinando file o cartelle sull'icona dell'applicazione.

2

Path Finder aggiunge questo al tuo Finder e aggiunge molte più funzionalità.

1
Khaled Kammar

Inoltre, in Snow Leopard in cui SymbolicLinker non funziona, è possibile creare un servizio con Automator per eseguire il comando Terminale o AppleScript per creare un collegamento simbolico.

0
beiju

Ancora un AS:

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
0
Lri

Un possibile miglioramento di questo script sarebbe la modifica del gestore di esecuzione per utilizzare i file attualmente selezionati dal Finder, in questo modo:

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

Puoi anche modificare [applicazione] /Contents/Info.plist da aggiungere

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

Poco prima dell'ultimo </ dict>. Ciò significherebbe che l'app verrebbe eseguita in background e non verrebbe visualizzata in primo piano quando si fa clic su di essa.

0
Benjamin Dobson