Comment faire un lien symbolique avec un fichier sous Linux?

je veux faire un lien symbolique Linux. J'ai écrit cette commande bash où le premier chemin est le dossier dans lequel je veux le lien et le deuxième chemin est la source compilée.

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

est-ce exact?

1537
demandé sur Eric Leschinski 2009-12-23 12:50:39

17 réponses

Pour créer un lien symbolique (échouera si le lien existe déjà):

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

pour créer ou mettre à jour un lien symbolique:

ln -sf /path/to/file /path/to/symlink
3072
répondu hsz 2017-01-11 08:19:48
ln -s TARGET LINK_NAME

où le -s le rend symbolique.

255
répondu cyborg 2015-05-11 07:40:34
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
239
répondu codaddict 2017-09-20 16:14:49
ln -s target linkName

vous pouvez jeter un oeil à la page de manuel ici:

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

81
répondu rui 2009-12-23 09:52:45

(parce qu'une image ASCII vaut mille caractères.)

une flèche peut être un mnémonique utile, d'autant plus que C'est presque exactement ce qu'il semble dans la direction D'Emacs.

et une grande image pour ne pas la confondre avec la version de Windows ""

Linux:

ln -s target <- linkName

Windows:

mklink linkName -> target

vous pouvez aussi les considérer comme

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

le from-here ne devrait pas encore exister, il doit être créé, tandis que le to-here devrait déjà exister (IIRC).

(j'ai toujours mélangé à savoir si les différentes commandes et les arguments qui devrait impliquer une pré-existant, ou à être faite.)

EDIT: C'est encore couler lentement pour moi; j'ai une autre façon que j'ai écrit dans mes notes.

ln -s (target exists) (link is made)
mklink (link is made) (target exists)
71
répondu Brady Trainor 2017-12-15 15:53:14
ln -s source_file target_file

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

22
répondu Rob M 2014-03-26 08:56:46

à la question initiale:


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

cela créera en effet un lien symbolique ( -s ) à partir du fichier / répertoire:

<basebuild>/IpDome-kernel/kernel

à votre nouveau lien

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

voici quelques façons de vous aider à vous souvenir:

D'abord, il y a la page de manuel pour ln . Vous pouvez y accéder en cherchant "man ln" dans google, ou tout simplement ouvrir une fenêtre de terminal et taper man ln et vous obtiendrez les mêmes informations. La page de manuel dit clairement:

ln [OPTION]... [- T] LINK_NAME cible (1ère forme)


que toutes les commandes nix fonctionnent de la même manière :

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

cp copie un fichier existant (le premier argument) vers un nouveau fichier (le deuxième argument).

mv déplace un fichier qui existe actuellement (le premier argument) vers un nouvel endroit (le second argument))

De même ln relie un fichier qui existe actuellement (le premier argument) à un nouveau lien (le second argument)) *


la dernière option que je voudrais suggérer est que vous pouvez créer vos propres pages de manuel qui sont faciles à lire et facile (pour vous) à trouver/Se souvenir. Il suffit de faire un script shell simple qui vous donne l'indice dont vous avez besoin. Pour exemple :

dans votre .bash_aliases fichier vous pouvez placer quelque chose comme:

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

alias 'cmds'=commandsfx

ensuite, lorsque vous en avez besoin, tapez simplement cmds à partir de la ligne de commande et vous obtiendrez la syntaxe appropriée d'une façon que vous pouvez lire et comprendre rapidement. Vous pouvez rendre ces fonctions aussi avancé que vous voulez pour obtenir ce que l'information dont vous avez besoin, c'est à vous. Vous pouvez même les rendre interactifs de sorte que vous avez juste à suivre invite.. quelque chose comme:

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

alias 'symlink'=makesymlink

* - évidemment ils peuvent tous prendre des paramètres différents et faire des choses différentes et peuvent travailler sur des fichiers aussi bien que des répertoires... mais la prémisse est la même

♦ - exemples d'utilisation de la coque bash

17
répondu Mike 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.
14
répondu miku 2009-12-23 09:56:55

si vous êtes dans le répertoire où vous voulez créer un lien symbolique, ignorez le second chemin.

cd myfolder
ln -s target

il créera un lien symbolique de target à l'intérieur de myfolder .

syntaxe générale

ln -s TARGET LINK_NAME
10
répondu Fizer Khan 2014-04-16 10:56:44

ln -s sourcepath linkpathname

Note:

-s fait des liens symboliques plutôt que des liens en dur

10
répondu simranjeet 2016-02-17 00:51:10

Créer des liens Symboliques ou Soft-liens sur Linux:

ouvrir l'invite de Bash et taper la commande mentionnée ci-dessous pour créer un lien symbolique vers votre fichier:

A) allez dans le dossier où vous voulez créer un lien doux et tapez la commande comme indiqué ci-dessous :

$ ln -s (path-to-file) (symbolic-link-to-file)

$ ln -s /home/user/file new-file

B) allez à votre nouveau chemin de nom de fichier et type :

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

exemple:

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

9
répondu Ankit Raj 2018-05-16 14:30:06

j'aimerais vous présenter une version anglaise plus simple des descriptions déjà présentées.

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

la commande "ln" crée un fichier-lien, et le "- s " spécifie que le type de lien sera symbolique. Un exemple de fichier de lien symbolique peut être trouvé dans une installation WINE (en utilisant "ls-la" pour afficher une ligne du contenu du répertoire):

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

fichier Standard-info stuff est à gauche (bien que le premier caractère soit un " l" pour le "lien"); le nom de fichier est "a" et le "->" indique également le fichier est un lien. Il indique essentiellement à WINE comment Windows "Drive A:" doit être associé à un lecteur de disquettes sous Linux. Pour créer réellement un lien symbolique similaire à celui-ci (dans le répertoire courant, et le faire réellement pour le vin est plus compliqué; utilisez l'utilitaire" winecfg"):

 ln -s  /mnt/floppy  a:   //will not work if file a: already exists
7
répondu vernonner3voltazim 2014-04-16 07:14:49

C'est le débordement de la pile donc je suppose que vous voulez le code:

tout le code suivant suppose que vous voulez créer un lien symbolique nommé /tmp/link qui renvoie à /tmp/realfile .

attention : bien que ce code vérifie les erreurs, il ne vérifie pas si /tmp/realfile existe réellement ! C'est parce qu'un lien mort est toujours valide et qu'en fonction de votre code vous pourriez (rarement) vouloir créer le lien avant le réel fichier.


Shell (bash, zsh, ...)

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

très simple, comme vous le feriez sur la ligne de commande (qui est le shell). Tout le traitement des erreurs est fait par l'interpréteur de commandes. Ce code suppose que vous avez un interpréteur de commande qui fonctionne à /bin/sh .

si nécessaire, vous pouvez toujours implémenter votre propre gestion des erreurs en utilisant la variable $? qui ne sera définie à 0 que si le lien a été créé avec succès.

C et C++

#include <unistd.h>
#include <stdio.h>

int main () {
  if( symlink("/tmp/realfile", "/tmp/link") != 0 )
    perror("Can't create the symlink");
}

symlink ne renvoie 0 que lorsque le lien peut être créé. Dans d'autres cas, j'utilise perror pour en savoir plus sur le problème.

Perl

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

ce code suppose que vous avez un interprète perl 5 à /usr/bin/perl . symlink ne renvoie 1 si le lien peut être créé. Dans d'autres cas, j'imprime la raison de l'échec. à la sortie standard error.

5
répondu Garo 2018-03-07 16:36:15

pour créer un lien symbolique / lien souple, utilisez:

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

p.ex.:

ln -s file1 link1
4
répondu Prem S 2018-01-25 15:50:51

il existe deux types de liens:

liens symboliques: se référer à un chemin symbolique indiquant l'emplacement abstrait d'un autre fichier

liens durs: se référer à l'emplacement spécifique des données physiques.

dans votre cas symlinks:

ln -s source target

vous pouvez vous référer à http://man7.org/linux/man-pages/man7/symlink.7.html

vous pouvez créer des liens trop durs

il est impossible de distinguer un lien dur vers un fichier de l'entrée originale dans le répertoire; toute modification apportée à un fichier est effectivement indépendante du nom utilisé pour faire référence au fichier. Les liens durs peuvent ne pas normalement renvoyer aux répertoires et ne pas couvrir les systèmes de fichiers.

ln source link
2
répondu wpp 2017-06-27 17:55:06

je trouve un peu déroutant les terminologies "cible" et "répertoire" dans l'homme de l'information.

la cible est le dossier vers lequel nous sommes en train de créer un lien symbolique et le répertoire le lien symbolique réel (pas le répertoire vers lequel vous allez créer un lien symbolique), si quelqu'un connaît la même confusion, ne vous sentez pas seul.

C'est mon interprétation de la création d'un lien symbolique (sous linux):

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

, Vous pouvez naviguer vers le dossier où vous voulez créer le lien symbolique et exécuter la commande ou spécifier le chemin complet pour votre lien symbolique au lieu du nom-de-votre-lien symbolique.

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

ou

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

j'espère que cela aidera ceux (encore) légèrement confus.

1
répondu mmmdearte 2017-11-16 10:35:06

comment créer un lien symbolique dans vagrant. Étapes:

  1. dans le fichier vagrant créer un dossier synchronisé. e.g config.vm.synced_folder "F:/Sunburst/source/sunburst/lms", " / source" F:/Sunburst/source/sunburst/lms :- lorsque le code source /source :- chemin d'accès au répertoire à l'intérieur de l'errance
  2. Erratique et type de vagrant ssh et aller à la source de l'annuaire électronique.g cd source
  3. vérifiez que votre structure de dossier code source est disponible dans le répertoire source. E. g / source / local
  4. puis allez dans le répertoire guest machine où se trouvent les fichiers associés au navigateur. Après obtenir la sauvegarde du fichier. e.g sudo mv local local_bk
  5. puis créer symlink E. g sudo ln-s/source / local local. lien moyen local-nom (nom de dossier dans la machine invitée que vous allez lier) si vous devez supprimer le lien symbolique:"
-1
répondu Vayodya Tamari 2016-02-15 09:54:44