Como criar um link simbólico ou programável?

465

Estou instalando o p4v /opt, mas /usr/binestá no meu caminho. É possível criar um link simbólico ou suave para p4v de /optpara /usr/bin, para que eu possa digitar "p4v", pois /usr/binestá no meu caminho?

café
fonte

Respostas:

666

Veja man ln.

Para criar um link simbólico no /usr/bin/barqual faz referência ao arquivo original /opt/foo, use:

ln -s /opt/foo /usr/bin/bar

Você precisaria aplicar o comando acima como root (ie com sudo).

Michał Šrajer
fonte
Estou usando: sudo ln –s /etc/apache2/sites-available/redmine /etc/apache2/sites-enabled/000-redminerecebendo erro:ln: target '/etc/apache2/sites-enabled/000-redmine' is not a directory
RAJ ...
1
A documentação do Ubuntu diz "Cria links físicos por padrão, links simbólicos com --symbolic". A solução acima criará um link simbólico conforme solicitado pelo OP?
Tanay
4
Embora César quisesse colocar seus arquivos no / opt e / usr / bin para ter o link simbólico, não o contrário.
contratempo
4
@mishap está certo no que me diz respeito. É o contrário.
Daniel Szmulewicz
2
@kevinmicke após a sua explicação finalmente percebeu que a explicação da resposta foi afirmado na ordem inversa a partir do comando, fazendo meu cérebro (e de outros) lê-lo para trás
Andrew
40

O erro é que você está escrevendo o comando errado. A maneira correta é

ln -s /<full>/<path>/<to>/<file> /usr/local/bin

http://ubuntuforums.org/showthread.php?t=2001697

Arnoldo, Pedro Duran, Machado
fonte
Observe o foreslash principal /
maça
Obrigado, senti muita falta de que precisava do caminho absoluto para o arquivo vinculado.
Andi R
21

Se o executável 'p4v' estiver em / opt / bin / p4v, você pode simplesmente executar:

sudo ln -s /opt/bin/p4v /usr/bin/p4v
sudo chmod ugo+x /usr/bin/p4v

Seria melhor adicionar / opt / bin (ou onde quer que o executável esteja) ao seu caminho:

echo "export PATH=\$PATH:/opt/bin" >> ~/.profile
reset
dv3500ea
fonte
~/.profileseria melhor para a configuração $PATH.
Lekensteyn 8/08
você pode editar /etc/environmentpara modificar o sistema PATH em todo o sistema.
Michał Šrajer 8/08
4

Verifique a localização do software por isso.

which application-name #replace for the application you are looking for

por exemplo

which skype

saída será esta.

/usr/bin/skype 

Para criar o link virtual. por exemplo, você deseja criar o link virtual para skypesua área de trabalho

ln -s /usr/bin/skype ~/Desktop/

Para mais informações sobre ln.

man ln

ou

ln --help
Hafiz Shehbaz Ali
fonte
2
ln -s -n ./TargetDirectory ./Nickname

Observe que isso funciona se os dois nós estiverem abaixo de você na mesma árvore. Você pode usar notação relativa

  • O comando -s o torna um link simbólico
  • -n possibilita a criação de um link simbólico do tipo pasta
Mohamad El Boudi
fonte
Bem-vindo ao askubuntu.com. Nesse caso, a $indicação de um prompt de linha de comando é uma opção de estilo e provavelmente não será um problema. No entanto, lembre-se de que incluir coisas em um bloco de código que não seja o código e sua saída pode causar confusão.
11187 J. Starnes
1

Este modelo foi mais útil para mim do que as respostas acima. Provavelmente não é mais correto, apenas menos ofuscado:

ln -s <path/to/real/file-or-folder> <symlink path>

Basta substituir as peças em <>'s

LucasY
fonte
0

Se estiver dizendo target is not a folder, significa que há espaços nos nomes das pastas, por exemplo: New Foldertem um espaço

Você precisa editar o caminho e adicionar uma barra invertida \após cada espaço nos caminhos

por exemplo:

ln -s /opt/bin /usr/var/New\ Folder
Sam
fonte
3
Esta não é uma resposta para a pergunta dos POs. Aguarde até que você tenha reputação suficiente para adicionar comentários.
DerHugo 9/11
0

Eu descobri que é mais fácil ir para onde você deseja que o link esteja e depois criar o link usando sudo ln -s /path/to/source/file, do que fazendo ln -s target source.

Assim, no seu caso eu faria cd /usr/binem seguida sudo ln -s /opt/bin/pv4. A outra maneira não está funcionando no meu caso.

briankip
fonte