Jak dowiązać symbolicznie plik w Linuksie?
Chcę utworzyć dowiązanie symboliczne w Linuksie. Napisałem to polecenie bash, gdzie pierwsza ścieżka jest folderem, do którego chcę link, a druga ścieżka jest skompilowanym źródłem.
ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
Czy to prawda? 17 answers
Utworzenie nowego dowiązania symbolicznego (nie powiedzie się, jeśli dowiązanie symboliczne już istnieje):
ln -s /path/to/file /path/to/symlink
Aby utworzyć lub zaktualizować dowiązanie symboliczne:
ln -sf /path/to/file /path/to/symlink
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 08:19:48
ln -s TARGET LINK_NAME
Gdzie -s
czyni to symbolicznym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-11 07:40:34
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 16:14:49
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-23 09:52:45
(ponieważ obraz ASCII jest wart tysiąca znaków.)
Strzałka może być pomocnym mnemonikiem, zwłaszcza, że prawie tak wygląda w dired Emacsa.I big picture, aby nie pomylić go z wersją Windows
Linux:
ln -s target <- linkName
Windows:
mklink linkName -> target
Można też spojrzeć na nie jako
ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"
from-here
nie powinno jeszcze istnieć, ma być utworzone, podczas gdy to-here
powinno już istnieć (IIRC).
(I zawsze mieszaj się w kwestii tego, czy różne polecenia i argumenty powinny obejmować istniejącą wcześniej lokalizację, czy taką, która ma być wykonana.)
EDIT: to wciąż powoli tonie dla mnie; mam inny sposób, który napisałem w moich notatkach.
ln -s (target exists) (link is made)
mklink (link is made) (target exists)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-15 15:53:14
ln -s source_file target_file
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 08:56:46
Do pytania pierwotnego:
'ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal'
To rzeczywiście stworzy dowiązanie symboliczne (-s
) z pliku / katalogu:
<basebuild>/IpDome-kernel/kernel
Do twojego nowego linku
/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
Oto kilka sposobów, które pomogą Ci zapamiętać:
Po pierwsze, jest strona man dla ln
. Możesz uzyskać dostęp do tego poprzez wyszukiwanie "man ln" w google, lub po prostu otwórz okno terminala i wpisz man ln
, a otrzymasz te same informacje. Strona podręcznika wyraźnie stwierdza:
Ln [opcja]... [- T] TARGET LINK_NAME (1st form)
Jeśli konieczność przeszukiwania lub czytania strony podręcznika za każdym razem nie jest dla ciebie, być może będziesz miał łatwiejszy czas, pamiętając, że wszystkie polecenia {37]} nix działają w ten sam sposób:
cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link
cp
kopiuje istniejący plik (pierwszy argument) do nowego pliku (drugi argument).mv
przenosi plik, który aktualnie istnieje (pierwszy argument) do nowego miejsca (drugi argument)
Podobnie ln
łączy plik, który obecnie istnieje (pierwszy argument) z nowym dowiązaniem (drugi argument)*
Ostatnią opcją, którą chciałbym zaproponować, jest możliwość tworzenia własnych stron podręcznika, które są łatwe do odczytania i łatwe (dla Ciebie) do znalezienia/zapamiętania. Wystarczy zrobić prosty skrypt powłoki, który daje wskazówkę, której potrzebujesz. Na przykład♦:
W Twoim .bash_aliases plik możesz umieścić w następujący sposób:
commandsfx() {
echo "Symlink: ln -s /path/to/file /path/to/symlink"
echo "Copy: cp /file/to/copy /destination/to/send/copy"
}
alias 'cmds'=commandsfx
Następnie, gdy jest to potrzebne, z linii poleceń po prostu wpisz cmds
i odzyskasz właściwą składnię w sposób, który możesz szybko przeczytać i zrozumieć. Możesz uczynić te funkcje tak zaawansowanymi, jak chcesz, aby uzyskać potrzebne informacje, to zależy od Ciebie. Możesz nawet uczynić je interaktywnymi, więc po prostu musisz postępować zgodnie z instrukcjami.. coś w stylu:
makesymlink() {
echo "Symlink name:"
read sym
echo "File to link to:"
read fil
ln -s $fil $sym
}
alias 'symlink'=makesymlink
* - oczywiście wszystkie mogą przyjmować różne parametry i robić różne rzeczy i może pracować na plikach, a także katalogach... ale założenie jest takie samo
♦ - przykłady użycia powłoki bash
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-06 13:42:42
ln [-Ffhinsv] source_file [target_file]
link, ln -- make links
-s Create a symbolic link.
A symbolic link contains the name of the file to which it is linked.
An ln command appeared in Version 1 AT&T UNIX.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-23 09:56:55
Jeśli znajdujesz się w katalogu, w którym chcesz utworzyć dowiązanie symboliczne, zignoruj drugą ścieżkę.
cd myfolder
ln -s target
Utworzy dowiązanie symboliczne target
wewnątrz myfolder
.
Składnia Ogólna
ln -s TARGET LINK_NAME
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-16 10:56:44
ln -s sourcepath linkpathname
Uwaga:
-S tworzy dowiązania symboliczne zamiast dowiązań twardych
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-17 00:51:10
Tworzenie dowiązań symbolicznych lub miękkich na Linuksie:
Otwórz wiersz polecenia Bash i wpisz poniższe polecenie, aby utworzyć dowiązanie symboliczne do pliku:
A) Przejdź do folderu, w którym chcesz utworzyć soft link i wpisz polecenie wymienione poniżej:
$ ln -s (path-to-file) (symbolic-link-to-file)
$ ln -s /home/user/file new-file
B) Goto your new-file name path and type :
$ ls -lrt (To see if the new-file is linked to the file or not)
Przykład:
ls -lrt
lrwxrwxrwx 1 user user 24 Aug 6 23:40 new-file -> /home/user/file
Note: Where, A -> B Means, A is symbolically linked to B
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 14:30:06
Chciałbym przedstawić prostszą, angielską wersję przedstawionych już opisów.
ln -s /path-text/of-symbolic-link /path/to/file-to-hold-that-text
Polecenie" ln "tworzy plik-dowiązania, A" - s " określa, że typ dowiązania będzie symboliczny. Przykład pliku dowiązania symbolicznego można znaleźć w instalacji WINE (używając "ls-la" do pokazania jednej linii zawartości katalogu):
lrwxrwxrwx 1 me power 11 Jan 1 00:01 a: -> /mnt/floppy
Standardowe informacje o plikach są po lewej stronie (chociaż zauważ, że pierwszy znak to " l "jako " link"); nazwa pliku to " a:", a także" ->" wskazuje, że plik jest łączem. Zasadniczo mówi WINE, jak Windows "Drive A:" ma być powiązany z dyskietką w Linuksie. Aby utworzyć dowiązanie symboliczne podobne do tego (w bieżącym katalogu, a faktycznie zrobić to dla WINE jest bardziej skomplikowane; użyj narzędzia "winecfg"): {]}
ln -s /mnt/floppy a: //will not work if file a: already exists
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-16 07:14:49
To jest przepełnienie stosu więc zakładam, że chcesz kod:
Cały następujący kod zakłada, że chcesz utworzyć dowiązanie symboliczne o nazwie /tmp/link
, które łączy się z /tmp/realfile
.
Uwaga : chociaż ten kod sprawdza pod kątem błędów, nie sprawdza, czy /tmp/realfile
rzeczywiście istnieje ! Dzieje się tak dlatego, że martwe łącze jest nadal ważne i w zależności od kodu możesz (rzadko) chcieć utworzyć łącze przed prawdziwym plikiem.
Shell (bash, zsh,...)
#!/bin/sh
ln -s /tmp/realfile /tmp/link
Real simple, tak jak byś to zrobił w wierszu poleceń (którym jest powłoka). Cała obsługa błędów jest wykonywana przez interpreter powłoki. Ten kod zakłada, że masz działający interpreter powłoki w /bin/sh
.
W razie potrzeby nadal możesz zaimplementować własną obsługę błędów, używając zmiennej $?
, która będzie ustawiona na 0 tylko wtedy, gdy link został pomyślnie utworzony.
C i C++
#include <unistd.h>
#include <stdio.h>
int main () {
if( symlink("/tmp/realfile", "/tmp/link") != 0 )
perror("Can't create the symlink");
}
symlink
zwraca 0 tylko wtedy, gdy można utworzyć łącze. W innych przypadkach używam perror
, aby powiedzieć więcej o problemie.
Perl
#!/usr/bin/perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
print STDERR "Can't create the symlink: $!\n"
}
Ten kod zakłada, że masz interpreter perl 5 w /usr/bin/perl
. symlink
zwraca tylko 1, jeśli można utworzyć łącze. W innych przypadkach drukuję przyczynę awarii na standardowym wyjściu błędu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-07 16:36:15
Aby utworzyć dowiązanie symboliczne / dowiązanie miękkie, użyj:
ln -s {source-filename} {symbolic-filename}
Np.:
ln -s file1 link1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-25 15:50:51
Istnieją dwa rodzaje linków:
Dowiązania symboliczne: odnoszą się do symbolicznej ścieżki wskazującej abstrakcyjne położenie innego pliku
Twarde linki: odnoszą się do konkretnej lokalizacji danych fizycznych.
W Twoim przypadku dowiązania symboliczne:
ln -s source target
Możesz odnieść się do http://man7.org/linux/man-pages/man7/symlink.7.html
Możesz tworzyć zbyt twarde linki
Twarde łącze do pliku jest nie do odróżnienia od oryginalnego wpisu katalogu; wszelkie zmiany w pliku są skutecznie niezależne od nazwy używanej do odwoływania się do pliku. Łącza twarde mogą zwykle nie odnosić się do katalogów i nie obejmować systemów plików.
ln source link
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-27 17:55:06
Znajduję trochę mylące terminologie " cel " i "katalog" w informacji o człowieku.
Celem jest katalog, do którego dowiązujemy symbolicznie, oraz katalog, do którego dowiązujemy symbolicznie (Nie katalog, do którego będziemy dowiązywać symbolicznie), jeśli ktoś doświadcza tego samego zamieszania, nie czuj się samotny.
Oto moja interpretacja tworzenia dowiązania symbolicznego (w Linuksie):
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
Możesz przejść do folderu, w którym chcesz utworzyć dowiązanie symboliczne i uruchomić polecenie lub określ pełną ścieżkę dla dowiązania symbolicznego zamiast nazwy dowiązania symbolicznego.
cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
Lub
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK
Mam nadzieję, że to pomoże tym (wciąż) skąpo zdezorientowanym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-16 10:35:06
Jak utworzyć dowiązanie symboliczne w vagrant. Kroki:
- w pliku vagrant Utwórz zsynchronizowany folder. np. config.vm.synced_folder "F:/Sunburst/source/sunburst/lms", " /źródło" F:/Sunburst/source/sunburst/lms : - where the source code, / source :- directory path inside the vagrant
- Vagrant w górę i wpisz Vagrant ssh i przejdź do katalogu źródłowego np. cd source
- Sprawdź, czy struktura folderów kodu źródłowego jest dostępna w katalogu źródłowym. e. g/source / local
- Następnie przejdź do katalog guest machine, w którym pliki kojarzone są z przeglądarką. Po uzyskaniu kopii zapasowej pliku. np. sudo mv local local_bk
- następnie utwórz dowiązanie symboliczne np. sudo ln-s/source / local local. local mean link-name (nazwa folderu w komputerze gościa, który zamierzasz połączyć) jeśli chcesz usunąć dowiązanie symboliczne: - wpisz sudo rm local
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 09:54:44