Jak utworzyć miękki lub symboliczny link?

464

Instaluję p4v /opt, ale /usr/binjest na mojej drodze. Czy można utworzyć miękkie lub symboliczne łącze dla p4v od /optdo /usr/bin, więc mogę po prostu wpisać „p4v”, ponieważ /usr/binjest na mojej drodze?

Kawa
źródło

Odpowiedzi:

665

Zobaczyć man ln.

Aby utworzyć dowiązanie symboliczne, do /usr/bin/barktórego odwołuje się oryginalny plik /opt/foo, użyj:

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

Będziesz musiał zastosować powyższe polecenie jako root (tj. Z sudo).

Michał Šrajer
źródło
Używam: sudo ln –s /etc/apache2/sites-available/redmine /etc/apache2/sites-enabled/000-redmineotrzymuję błąd:ln: target '/etc/apache2/sites-enabled/000-redmine' is not a directory
RAJ ...
1
Dokumentacja Ubuntu mówi: „Domyślnie tworzy twarde linki, dowiązania symboliczne z --symbolic”. Czy powyższe rozwiązanie stworzy symboliczne łącze, o które poprosi OP?
Tanay
4
Myślałem, że César chciał umieścić swoje pliki w / opt i / usr / bin, aby mieć dowiązanie symboliczne, a nie odwrotnie.
nieszczęście
4
@mishap ma rację, jeśli o mnie chodzi. Jest na odwrót.
Daniel Szmulewicz,
2
@kevinmicke po tym, jak twoje wyjaśnienie w końcu uświadomiło sobie, że wyjaśnienie odpowiedzi zostało podane w odwrotnej kolejności od polecenia, co zmusiło mój mózg (i innych) do przeczytania go wstecz
Andrew
40

Błąd polega na tym, że źle wpisujesz polecenie. Prawidłowy sposób to

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

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

Pedro Arnoldo Machado Duran
źródło
Zwróć uwagę na wiodący foreslash /
mace
Dzięki, całkowicie mi brakowało, że potrzebowałem bezwzględnej ścieżki do połączonego pliku.
Andi R
21

Jeśli plik wykonywalny „p4v” znajduje się w katalogu / opt / bin / p4v, możesz po prostu uruchomić:

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

Lepiej byłoby dodać / opt / bin (lub gdziekolwiek plik wykonywalny) do swojej ścieżki:

echo "export PATH=\$PATH:/opt/bin" >> ~/.profile
reset
dv3500ea
źródło
~/.profilebyłoby lepiej dla ustawienia $PATH.
Lekensteyn,
możesz edytować, /etc/environmentaby zmodyfikować PATH w całym systemie.
Michał Šrajer,
4

Sprawdź przez to lokalizację oprogramowania.

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

na przykład

which skype

wyjście będzie to.

/usr/bin/skype 

Aby utworzyć miękki link. na przykład chcesz utworzyć miękki link skypena pulpicie

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

Aby uzyskać więcej informacji na temat ln.

man ln

lub

ln --help
Hafiz Shehbaz Ali
źródło
2
ln -s -n ./TargetDirectory ./Nickname

Uwaga, działa to, jeśli oba węzły znajdują się poniżej ciebie w tym samym drzewie. Możesz użyć notacji względnej

  • -s powoduje, że jest to dowiązanie symboliczne
  • -n umożliwia utworzenie dowiązania symbolicznego typu folderu
Mohamad El Boudi
źródło
Witamy na askubuntu.com. W takim przypadku $wskazanie wiersza polecenia jest wyborem stylu i prawdopodobnie nie będzie stanowić problemu. Należy jednak pamiętać, że umieszczanie elementów w bloku kodu innym niż kod i jego wynik może powodować zamieszanie.
J. Starnes,
1

Ten szablon był dla mnie bardziej pomocny niż powyższe odpowiedzi. Prawdopodobnie nie bardziej poprawne, po prostu mniej zaciemnione:

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

Wystarczy wymienić części w <>„s

LucasY
źródło
0

Jeśli to mówi target is not a folder, oznacza to, że w nazwach folderów są spacje, np .: New Folderma spację

Musisz edytować ścieżkę i dodać odwrotny ukośnik \po każdym spacji w ścieżkach

na przykład:

ln -s /opt/bin /usr/var/New\ Folder
Sam
źródło
3
To nie jest odpowiedź na pytanie PO. Poczekaj, aż będziesz mieć wystarczającą reputację, aby dodać komentarze.
derHugo,
0

Odkryłem, że łatwiej jest przejść do miejsca, w którym chcesz, aby link był, a następnie utworzyć link za pomocą sudo ln -s /path/to/source/file, niż robić ln -s target source.

Więc w twoim przypadku zrobiłbym cd /usr/binto sudo ln -s /opt/bin/pv4. W moim przypadku inny sposób nie zadziałał.

briankip
źródło