Como posso criar um link simbólico no Terminal?


Respostas:


543
┌── ln(1) link, ln -- make links
   ┌── Create a symbolic link.
                            ┌── the optional path to the intended symlink
                               if omitted, symlink is in . named as destination
                               can use . or ~ or other relative paths
                      ┌─────┴────────┐
ln -s /path/to/original /path/to/symlink
      └───────┬───────┘
              └── the path to the original file/folder
                  can use . or ~ or other relative paths
$ echo content > original
$ ln -s original symlink
$ ls -la original symlink
-rw-r--r--  1 grgarside  staff    8 28 Jan 18:44 original
lrwxr-xr-x  1 grgarside  staff    8 28 Jan 18:44 symlink -> original
$ cat symlink
content

Para mais informações sobre ln (1), consulte a página de manual .

O caminho para o link simbólico é opcional; se omitido, o lnpadrão é criar um link com o mesmo nome que o destino, no diretório atual:

$ cd ~/Documents
$ ln -s ../Pictures
$ ls -l Pictures
lrwxr-xr-x  1 user  staff  11 Feb  1 17:05 Pictures -> ../Pictures

Para criar um link simbólico para substituir um diretório do sistema (por exemplo, se você deseja /Usersapontar para outra unidade de disco), é necessário desativar o System Integrity Protection . Você pode reativá-lo após a configuração do link simbólico.


63
Se apenas as páginas de manual fossem tão claras quanto a sua resposta!
Adrian Lynch

permissão negada: S, você pode me dar uma dica? tentando criar o link simbólico para usuários para que eu possa usá-lo em outro disco rígido e o ssd tenha apenas o link simbólico. graças
Ewoks

2
@patrix Eu editei minha resposta para esclarecer; fique à vontade para editar mais.
grg

4
Curiosidade: o original não precisa realmente existir. O comando ln -s "This directory is no longer in use" READMEseria perfeitamente legítimo e qualquer pessoa que executasse ls -lveria a mensagem.
Edward Falk

1
Para referência futura: Você não precisa mover / Usuários no macOS para economizar espaço. Você pode alterar os caminhos do diretório inicial dos usuários individualmente nas Preferências do sistema, em Usuários e grupos, clicando com o botão direito do mouse nas entradas da lista de usuários.
Peter W.

73

O comando é chamado ln. Se usado com a opção, -sele criará um link simbólico no diretório atual:

ln -s /any/file/on/the/disk linked-file

1
O arquivo vinculado precisa existir primeiro? Eu recebo um erro de arquivo não encontrado no destino.
AlxVallejo 26/10

2
O arquivo não (você recebe uma mensagem de erro, se houver), mas todos os diretórios em qualquer caminho. Se você estiver preso, sinta-se à vontade para fazer uma nova pergunta usando o botão Fazer pergunta no canto superior direito. Inclua um link para esta pergunta para fornecer contexto.
Nohillside

O link simbólico não deveria existir antes de você executar este comando. Mas um caminho válido é necessário, tanto quanto eu sei. Se a pasta do arquivo de saída não existir antes de você executar este comando, você também receberá um No such file or directoryerro.
Deniz Kaplan

34

Eu sei que esta pergunta está explicitamente perguntando sobre o Terminal, mas se você estiver no GUI Land e não quiser entrar no Terminal Land, poderá usar o SymbolicLinker . Isso coloca uma opção "Criar link simbólico" no menu Serviços do Finder.

Um menu de contexto para uma pasta, mostrando um submenu "Serviços", com "Criar link simbólico" em negrito

Um menu de contexto para um link simbólico, com a opção "Criar link simbólico"


3
Eu adoraria saber por que isso foi downvoted que eu possa fazer respostas de alta qualidade a partir de agora :)
Ben leggiero

10
provavelmente porque a pergunta era "Como posso criar um link simbólico no Terminal?" Mas eu não estou downvoting você :)
vedrano

1
@EdwardFalk acho que em El Capitan, você pode segurar Command+ Optionao arrastar um arquivo ... irá atualizar a resposta mais tarde
Ben leggiero

1
@BenLeggiero Isso cria um pseudônimo.
Andy Stewart

2
@ BenLeggerio, A diferença é explicada aqui: apple.stackexchange.com/questions/2991/…
MiB


5

ln -s /some/dir/ ~/Desktop/dir

Você também pode criar um link simbólico para o diretório usando o mesmo comando

ln -s "$(pwd)" ~/Desktop/dir

Para criar um link simbólico para o diretório atual em que você está.


2
Um simples .(ponto) dará o pwd. Nenhum argumento fantasia necessária :)
mylogon

@mylogon hahaha eu gosto de pensar demais às vezes. simplificou minha resposta!
Gerald

@mylogon Acabei de perceber que .não funciona no macOS. ainda não experimentou o linux. usando ./resultou nisso foo -> ./fooque aponta para si mesmo.
Gerald

Qual é o comando completo que você digitou?
mylogon
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.