Hoe kan ik een bestand in Linux symblinken?

Ik wil een symbolische link maken in Linux. Ik heb deze bash-opdracht geschreven waar het eerste pad de map is waar ik een link naar wil en het tweede pad is de gecompileerde bron.

ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal 

is dit correct?


1, Autoriteit 100%

Om een ​​nieuwe Symlink te maken (zal falen als Symlink al bestaat):

ln -s /path/to/file /path/to/symlink

Een symlink maken of bijwerken:

ln -sf /path/to/file /path/to/symlink

2, Autoriteit 8%

ln -s TARGET LINK_NAME

Waar de -shet symbolisch maakt.


3, Autoriteit 8%

ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

4, Autoriteit 3%

ln -s target linkName

U kunt de man pagina hier bekijken:

http://linux.die.net/man/1/ln


5, Autoriteit 2%

(Omdat een ASCII-afbeelding meer dan duizend tekens waard is.)

Een pijl is misschien een nuttige Mnemonic, vooral omdat dat bijna precies is hoe het eruit ziet in de hand van Emacs.

en grote foto, zodat u het niet in de war krijgt met de Windows-versie

Linux:

ln -s target <- linkName

Windows:

mklink linkName -> target

U kunt deze ook bekijken als

ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"

De from-heremag nog niet bestaan, het moet worden gemaakt, terwijl de to-hereal moet bestaan ​​(IIRC).

(Ik raak altijd in de war over de vraag of verschillende commando’s en argumenten een reeds bestaande locatie moeten bevatten, of dat er een moet worden gemaakt.)

EDIT: Het dringt nog steeds langzaam tot me door; Ik heb een andere manier die ik in mijn aantekeningen heb geschreven.

ln -s (target exists) (link is made)
mklink (link is made) (target exists)

Antwoord 6

ln -s source_file target_file

http://unixhelp.ed.ac.uk/CGI/man- cgi?ln


Antwoord 7

Op de oorspronkelijke vraag:


'ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal'

Dit zal inderdaad een symbolische linkcreëren (-s) uit het bestand/de map:

<basebuild>/IpDome-kernel/kernel

naar je nieuwe link

/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal

Hier zijn een paar manieren om u te helpen herinneren:

Ten eerste is er de man-pagina voor ln. U kunt dit openen door te zoeken op “man ln” in google, of gewoon een terminalvenster openen en man lntypen en u krijgt dezelfde informatie. Op de man-pagina staat duidelijk:

ln [OPTION]… [-T] TARGET LINK_NAME (1e formulier)


Als het niet voor jou is om elke keer een man-pagina te moeten doorzoeken of lezen, is het misschien makkelijker om te onthouden dat alle nix-commando’s op dezelfde manier werken:

cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link

cpkopieert een bestand dat momenteel bestaat (de eerste argument) naar een nieuw bestand (het tweede argument).
mvverplaatst een bestand dat momenteel bestaat (het eerste argument) naar een nieuwe plaats (het tweede argument)

Evenzo linkt lneen bestand dat momenteel bestaat (het eerste argument ) naar een nieuwe link (het tweede argument)*


De laatste optie die ik zou willen voorstellen, is dat je je eigen man-pagina’s kunt maken die gemakkelijk te lezen en (voor jou) gemakkelijk te vinden/onthouden zijn. Maak gewoon een eenvoudig shellscript dat je de hint geeft die je nodig hebt. Bijvoorbeeld:

In je .bash_aliases-bestand kun je iets plaatsen als:

commandsfx() {
    echo "Symlink:  ln -s /path/to/file /path/to/symlink"
    echo "Copy:     cp /file/to/copy /destination/to/send/copy"
}
alias 'cmds'=commandsfx

Als je het nodig hebt, typ je gewoon cmdsvanaf de opdrachtregel en je krijgt de juiste syntaxis terug op een manier die je snel kunt lezen en begrijpen. U kunt deze functies zo geavanceerd maken als u wilt, welke informatie u nodig heeft, het is aan u. Je zou ze zelfs interactief kunnen maken, zodat je gewoon de aanwijzingen hoeft te volgen.. zoiets als:

makesymlink() {
    echo "Symlink name:"
    read sym
    echo "File to link to:"
    read fil
    ln -s $fil $sym
}
alias 'symlink'=makesymlink

* – natuurlijk kunnen ze allemaal verschillende parameters gebruiken en verschillende dingen doen en zowel aan bestanden als mappen werken… maar het uitgangspunt is hetzelfde
♦ – voorbeelden van het gebruik van de bash-shell


Antwoord 8

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.

9

Symbolische links of soft-links op Linux maken:

Open Bash-prompt en typ de onderstaande opdracht om een ​​symbolische link naar uw bestand te maken:

a) Ga naar de map waarin u een zachte link wilt maken en Typeout de opdracht zoals hieronder vermeld :

$ ln -s (path-to-file) (symbolic-link-to-file)
$ ln -s /home/user/file new-file

b) Ga naar uw NEW-bestandsnaampad en type :

$ ls -lrt (To see if the new-file is linked to the file or not)

Voorbeeld:

user@user-DT:[~/Desktop/soft]# ln -s /home/user/Desktop/soft/File_B /home/user/Desktop/soft/File_C
user@user-DT:[~/Desktop/soft]# ls -lrt
total 0
-rw-rw-r-- 1 user user  0 Dec 27 16:51 File_B
-rw-rw-r-- 1 user user  0 Dec 27 16:51 File_A
lrwxrwxrwx 1 user user 31 Dec 27 16:53 File_C -> /home/user/Desktop/soft/File_B
Note: Where, File_C -> /home/user/Desktop/soft/File_B  Means, File_C is symbolically linked to File_B

10

ln -s sourcepath linkpathname

Opmerking:

-S Maakt symbolische koppelingen in plaats van harde links


11

Als u in de map bent waar u Symlink wilt maken, negeert u het tweede pad.

cd myfolder
ln -s target

Het maakt Symlink van targetbinnen myfolder.

Algemene syntaxis

ln -s TARGET LINK_NAME

12

Dit is stapeloverloop, dus ik neem aan dat je wilt dat code:

Alle volgende code gaat ervan uit dat je een symbolische link met de naam /tmp/linkwilt maken die linkt naar /tmp/realfile.

LET OP: hoewel deze code op fouten controleert, controleert hij NIET of /tmp/realfiledaadwerkelijk bestaat! Dit komt omdat een dode link nog steeds geldig is en afhankelijk van je code zou je (zelden) de link voor het echte bestand willen maken.


Shell (bash, zsh, …)

#!/bin/sh
ln -s /tmp/realfile /tmp/link

Heel eenvoudig, net zoals je het zou doen op de opdrachtregel (de shell). Alle foutafhandeling wordt gedaan door de shell-interpreter. Deze code gaat ervan uit dat je een werkende shell-interpreter hebt op /bin/sh.

Indien nodig kunt u nog steeds uw eigen foutafhandeling implementeren door de variabele $?te gebruiken, die alleen op 0 wordt gezet als de link met succes is gemaakt.

C en C++

#include <unistd.h>
#include <stdio.h>
int main () {
  if( symlink("/tmp/realfile", "/tmp/link") != 0 )
    perror("Can't create the symlink");
}

symlinkretourneert alleen 0 wanneer de link kan worden gemaakt. In andere gevallen gebruik ik perrorom meer over het probleem te vertellen.

Perl

#!/usr/bin/perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
  print STDERR "Can't create the symlink: $!\n"
}

Deze code gaat ervan uit dat je een perl 5-interpreter hebt op /usr/bin/perl. symlinkretourneert alleen 1 als de link kan worden gemaakt. In andere gevallen druk ik de reden van de fout af naar de standaardfoutuitvoer.


Antwoord 13

Ik wil graag een duidelijker-Engelse versie van de reeds gepresenteerde beschrijvingen presenteren.

ln -s  /path-text/of-symbolic-link  /path/to/file-to-hold-that-text

Het “ln” commando creëert een link-FILE, en de “-s” specificeert dat het type link symbolisch zal zijn. Een voorbeeld van een symbolic-link-bestand is te vinden in een WINE-installatie (gebruik “ls -la” om één regel van de directory-inhoud weer te geven):

lrwxrwxrwx 1 me power 11 Jan  1 00:01 a: -> /mnt/floppy

Standaard bestandsinfo staat links (hoewel het eerste teken een “l” is voor “link”); de bestandsnaam is “a:” en de “->” geeft ook aan dat het bestand een link is. Het vertelt WINE in feite hoe Windows “Drive A:” moet worden geassocieerd met een diskettestation in Linux. Om daadwerkelijk een symbolische link te maken die gelijkaardig is aan die (in de huidige directory, en om dit daadwerkelijk te doen voor WINE is ingewikkelder; gebruik het hulpprogramma “winecfg”):

ln -s  /mnt/floppy  a:   //will not work if file a: already exists

Antwoord 14

Om een symbolische link /soft link te maken, gebruik:

ln -s {source-filename} {symbolic-filename}

bijv.:

ln -s file1 link1

Antwoord 15

Er zijn twee soorten links:

symbolische links: verwijzen naar een symbolisch pad dat de abstracte locatie van een ander bestand aangeeft

harde links: verwijzen naar de specifieke locatie van fysieke gegevens.

In jouw geval symbolische links:

ln -s source target

je kunt verwijzen naar http://man7.org/linux /man-pages/man7/symlink.7.html

u kunt te harde links maken

Een harde link naar een bestand is niet te onderscheiden van de oorspronkelijke map-entry; Alle wijzigingen in een bestand zijn effectief onafhankelijk van de naam die wordt gebruikt om het bestand te verwijzen. Harde links kunnen normaal niet naar mappen verwijzen en mogen geen bestandssystemen overspannen.

ln source link

16

Ik vind een beetje verwarrend de terminologieën “Doel” en “Directory” in de man-informatie.

Het doel is de map die we symlinkt naar en de directory de daadwerkelijke symlink (niet de map waarnaar u ondervindt), als iemand dezelfde verwarring ervaart, voel dan niet alleen.

Dit is mijn interpretatie van het maken van een symlink (in Linux):

ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK

U kunt naar de map navigeren waar u de Symlink wilt maken en de opdracht wilt uitvoeren of het volledige pad wilt opgeven voor uw Symlink in plaats van naam-of-Your-Symlink.

cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK

OF

ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK

Ik hoop dat dit helpt voor degenen die (nog) een beetje in de war zijn.


Antwoord 17

Hoe een symlink in zwerver te maken.
Stappen:

  1. Maak in een zwervend bestand een gesynchroniseerde map. bijv. config.vm.synced_folder “F:/Sunburst/source/sunburst/lms”, “/source”
    F:/Sunburst/source/sunburst/lms :- waar de broncode, /source :- directorypad binnen de zwerver
  2. Vagrant omhoog en typ vagrant ssh en ga naar de bronmap, bijvoorbeeld cd source
  3. Controleer of de mapstructuur van uw broncode beschikbaar is in de bronmap. bijv. /source/local
  4. Ga vervolgens naar de map van de gastmachine waar de bestanden staan die aan de browser zijn gekoppeld. Nadat u een back-up van het bestand hebt gekregen. bijv. sudo mv local local_bk
  5. Maak vervolgens een symbolische link, bijvoorbeeld sudo ln -s /source/local local. local mean link-name (mapnaam in guest machine die je gaat linken)
    als u de symlink moet verwijderen: – Typ sudo rm local

Other episodes