OS X non creerà alcun collegamento simbolico, ma crea alias

5

Non importa quanto cerco di creare un collegamento simbolico OS X si rifiuta di giocare e crea invece un alias. Ho provato diversi strumenti e anche attraverso il terminale usando il comando ln .

Sono su una nuova installazione e uso il comando ln funzionato bene prima. Qualche idea su cosa succede?

Grazie, Will

    
posta user68523 25.01.2014 - 00:11
fonte

4 risposte

12

Proviamo alcuni esperimenti e osserviamo alcune cose.

In un emulatore di terminale, come Terminal.app in / Applicazioni / Utility, vai alla tua home directory ( cd ~ ) e crea una directory ( mkdir [directory] ).

Assicurati di entrare nella directory appena creata ( cd [directory] ).

cd ~
mkdir directory
cd directory

Dopo, crea un file; un semplice file di testo farà:

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

Ora prova a creare un collegamento fisico, come questo:

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

Quindi, prova a creare un collegamento simbolico, come questo:

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

Ora apri la directory in Finder con open . e crea un alias.

Nell'emulatore di terminale che hai aperto prima, un altro ls dovrebbe darci questo:

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

Anche la GUI del Finder dovrebbe risultare in questo:

SinotichelaGUIdelFindervisualizzaunlinksimbolicocomealias.

Unlinksimbolicoènonlastessacosadiunalias.Unveroaliashaattributiestesirispettoauncollegamentosimbolico.

NellaGUIdelFinder,nonc'èmododidirecheunhardlinkètuttotrannecheunfile.

Perognilinksimbolico,c'èuna"l" all'estremità sinistra degli attributi e il comando ls ci dice dove punta.

Quando provi questo, esattamente cosa ottieni?

    
risposta data 25.01.2014 - 06:00
fonte
1

OS X può creare entrambi, ma in modi diversi. Come sembra che tu stia usando la parola alias è una scorciatoia di file (o directory) che è stata creata nel Finder per qualsiasi cosa tu veda elencato lì, mentre un link simbolico (link simbolico) può essere creato in una shell istanza avviata dall'app terminale utilizzando il comando:

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

Non è possibile creare un collegamento simbolico direttamente in una finestra del Finder (indirettamente forse chiamando uno script AppleScript da uno script di shell o viceversa).

Ma qui c'è un'ambiguità perché esiste un altro tipo di alias, che è un soprannome definito dall'utente che è possibile assegnare a una sequenza di comandi della shell quando si apre una sessione terminale. Ad esempio in una finestra shell bash:

$ alias listall=ls -al'

Definisce un soprannome listall per il comando ls -al per elencare tutti i file nella directory corrente. In questo contesto 'alias' descrive i nickname del comando - alias è in realtà un comando built-in della shell bash per la creazione di tali nickname.

Non sono un esperto del filesystem OS X, solo un utente e uno scripter, ma da quello che ho letto il motivo per cui un alias del Finder non si rompe in OS X è perché contiene un numero seriale univoco per il suo file di destinazione (chiamato un numero di inode, che esiste per ogni file e directory) che è indipendente dal suo percorso di file. Ciò significa che se si sposta il target in un'altra directory, l'alias continuerà a puntare su di esso, mentre un collegamento simbolico si interromperà perché utilizza il percorso del file della destinazione.

    
risposta data 31.12.2014 - 23:28
fonte
0

Non puoi creare in modo nativo link simbolici (link simbolici) in Finder , solo alias. Tuttavia, puoi utilizzare AppleScript per creare collegamenti simbolici se è ciò di cui hai bisogno in definitiva.

Per capire perché è così, dobbiamo capire la differenza tra alias, link simbolici e collegamenti fisici:

  • Alias sono convenzioni Finder ; nel senso che funzionano solo all'interno del Finder e non nell'ambiente UNIX di OS X. Sono piccoli file di dati e la tua shell (bash, sh, zsh, ecc.) non sa come interpretarli.

  • Link simbolici (i collegamenti simbolici in breve) sono scorciatoie che fanno parte del filesystem * NIX. Finder li considera come quasi alias, puoi vederli e usarli, ma non contengono nessuno dei metadati extra contenuti negli alias del Finder.

  • Collegamenti duri sono abbastanza simili agli alias nel Finder, tranne per il fatto che non contengono il percorso del file originale. Gli hard link appaiono come normali file all'interno del Finder; non saprai che non stai lavorando con il file originale, ma con quello linkato. Gli hard link sono ciò che ln crea per impostazione predefinita quando ometti il -s flag.

Per ulteriori dettagli, ho scritto più approfonditamente su questa risposta .

La linea di fondo qui è che sarai in grado di creare solo collegamenti simbolici e hard link in Terminal (ambiente UNIX di OS X) ma usarli globalmente. Sarai in grado di creare e utilizzare alias solo all'interno del Finder. (IMO) Per questo motivo, rimango lontano dagli alias e utilizzo i collegamenti simbolici praticamente esclusivamente.

    
risposta data 06.09.2016 - 13:55
fonte
-1

Ho avuto questo problema. Ho provato a salvare il link in una cartella diversa. Con un po 'di prove ed errori ha funzionato. Non ho idea del perché.

    
risposta data 18.02.2015 - 10:39
fonte

Leggi altre domande sui tag