it-swarm.com.de

Wie symlinke ich eine Datei in Linux?

Ich möchte einen symbolischen Link in Linux erstellen. Ich habe diesen Bash-Befehl geschrieben, in dem der erste Pfad der Ordner ist, in den ich verlinken möchte, und der zweite Pfad die kompilierte Quelle ist.

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

Ist das richtig?

1814
chrissygormley

So erstellen Sie einen neuen Symlink (schlägt fehl, wenn der Symlink bereits vorhanden ist):

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

So erstellen oder aktualisieren Sie einen Symlink:

ln -sf /path/to/file /path/to/symlink
3523
hsz
ln -s TARGET LINK_NAME

Wo der -s es symbolisch macht.

283
cyborg
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
275
codaddict
ln -s target linkName

Sie können die Manpage hier ansehen:

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

91
rui

(Weil ein ASCII Bild tausend Zeichen wert ist.)

Ein Pfeil kann eine hilfreiche Andeutung sein, zumal es in Emacs 'Richtung fast genauso aussieht.

Und das Ganze, damit Sie es nicht mit der Windows-Version verwechseln

Linux:

ln -s target <- linkName

Windows:

mklink linkName -> target

Sie könnten diese auch als ansehen

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

Der from-here soll noch nicht existieren, er soll angelegt werden, während der to-here bereits existieren soll (IIRC).

(Ich bin immer verunsichert, ob es sich bei verschiedenen Befehlen und Argumenten um einen bereits vorhandenen oder einen auszuführenden Speicherort handelt.)

EDIT: Es sinkt immer noch langsam für mich; Ich habe einen anderen Weg, den ich in meine Notizen geschrieben habe.

ln -s (target exists) (link is made)
mklink (link is made) (target exists)
81
Brady Trainor
ln -s source_file target_file

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

24
Rob M

Zur ursprünglichen Frage:


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

Dadurch wird in der Tat ein symbolischer Link (-s) aus der Datei/dem Verzeichnis erstellt:

<basebuild>/IpDome-kernel/kernel

zu Ihrem neuen Link

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

Es gibt einige Möglichkeiten, sich zu erinnern:

Erstens gibt es die Manpage für ln . Sie können darauf zugreifen, indem Sie in Google nach "man ln" suchen oder einfach ein Terminalfenster öffnen und man ln eingeben. Sie erhalten dann dieselben Informationen. In der Manpage heißt es eindeutig:

in [OPTION] ... [-T] TARGET LINK_NAME (1. Form)


Wenn Sie nicht jedes Mal eine Manpage durchsuchen oder durchlesen müssen, fällt es Ihnen vielleicht leichter, sich daran zu erinnern, dass alle nix-Befehle auf die gleiche Weise funktionieren :

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

cp kopiert eine aktuell vorhandene Datei (das erste Argument) in eine neue Datei (das zweite Argument).
mv verschiebt eine aktuell vorhandene Datei (das erste Argument) an einen neuen Ort (das zweite Argument)

Ebenso ln verknüpft eine aktuell vorhandene Datei (das erste Argument) mit einem neuen Link (das zweite Argument)*


Die letzte Option, die ich vorschlagen möchte, ist, dass Sie Ihre eigenen Manpages erstellen können, die leicht zu lesen und (für Sie) leicht zu finden/zu merken sind. Erstellen Sie einfach ein einfaches Shell-Skript, das Ihnen den gewünschten Hinweis gibt. Zum Beispiel:

In Ihre .bash_aliases-Datei können Sie Folgendes einfügen:

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

alias 'cmds'=commandsfx

Geben Sie dann bei Bedarf in der Befehlszeile einfach cmds ein, und Sie erhalten die korrekte Syntax so zurück, dass Sie sie schnell lesen und verstehen können. Sie können diese Funktionen so erweitern, wie Sie möchten, welche Informationen Sie benötigen. Es liegt an Ihnen. Sie können sie sogar interaktiv gestalten, sodass Sie nur den Anweisungen folgen müssen.

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

alias 'symlink'=makesymlink

* - Nun, offensichtlich können sie alle unterschiedliche Parameter und Aufgaben übernehmen und sowohl Dateien als auch Verzeichnisse bearbeiten ... aber die Prämisse ist dieselbe
♦ - Beispiele mit der Bash-Shell

18
Mike
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.
16
miku

Erstellen von symbolischen Links oder Softlinks unter Linux:

Öffnen Sie die Bash-Eingabeaufforderung und geben Sie den folgenden Befehl ein, um eine symbolische Verknüpfung zu Ihrer Datei herzustellen:

A) Gehen Sie zu dem Ordner, in dem Sie einen Softlink erstellen möchten, und geben Sie den folgenden Befehl ein :

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

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

B) Gehen Sie zu Ihrem neuen Dateinamen und geben Sie ein:

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

Beispiel:

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

12
Ankit Raj

ln -s sourcepath linkpathname

Anmerkung:

- s erstellt symbolische Verknüpfungen anstelle von festen Verknüpfungen

11
simranjeet

Wenn Sie sich in dem Verzeichnis befinden, in dem Sie einen Symlink erstellen möchten, ignorieren Sie den zweiten Pfad.

cd myfolder
ln -s target

Es wird ein Symlink von target innerhalb von myfolder erstellt.

Allgemeine Syntax

ln -s TARGET LINK_NAME
10
Fizer Khan

Das ist Stack Overflow, also nehme ich an, Sie wollen Code:

Der folgende Code setzt voraus, dass Sie eine symbolische Verknüpfung mit dem Namen /tmp/link erstellen möchten, die auf /tmp/realfile verweist.

VORSICHT: Obwohl dieser Code auf Fehler überprüft, wird NICHT geprüft, ob /tmp/realfile tatsächlich vorhanden ist! Dies liegt daran, dass ein toter Link immer noch gültig ist. Abhängig von Ihrem Code möchten Sie den Link möglicherweise (selten) vor der eigentlichen Datei erstellen.


Shell (bash, zsh, ...)

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

Ganz einfach, genau wie Sie es auf der Kommandozeile tun würden (das ist die Shell). Die gesamte Fehlerbehandlung erfolgt durch den Shell-Interpreter. Dieser Code setzt voraus, dass Sie einen funktionierenden Shell-Interpreter unter /bin/sh haben.

Bei Bedarf können Sie dennoch Ihre eigene Fehlerbehandlung implementieren, indem Sie die Variable $? verwenden, die nur dann auf 0 gesetzt wird, wenn der Link erfolgreich erstellt wurde.

C und C++

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

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

symlink gibt nur 0 zurück, wenn der Link erstellt werden kann. In anderen Fällen benutze ich perror, um mehr über das Problem zu erzählen.

Perl

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

In diesem Code wird davon ausgegangen, dass Sie einen Perl 5-Interpreter unter /usr/bin/Perl haben. symlink gibt nur 1 zurück, wenn der Link erstellt werden kann. In anderen Fällen drucke ich den Fehlergrund in die Standardfehlerausgabe.

9
Garo

Ich möchte eine einfachere englische Version der bereits vorgestellten Beschreibungen präsentieren.

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

Der Befehl "ln" erstellt eine Link-Datei, und das "-s" gibt an, dass der Typ des Links symbolisch ist. Ein Beispiel für eine Symbolic-Link-Datei finden Sie in einer WINE-Installation (mit "ls -la" wird eine Zeile des Verzeichnisinhalts angezeigt):

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

Standard-Datei-Info-Zeug ist links (obwohl das erste Zeichen ein "l" für "Link" ist); der Dateiname ist "a:" und das "->" zeigt auch an, dass die Datei ein Link ist. Grundsätzlich wird WINE mitgeteilt, wie Windows "Laufwerk A:" mit einem Diskettenlaufwerk unter Linux verknüpft werden soll. Es ist komplizierter, einen symbolischen Link (im aktuellen Verzeichnis und tatsächlich für WINE) zu erstellen (verwenden Sie das Dienstprogramm "winecfg"):

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

Um einen symbolischen Link/Softlink zu erstellen, verwenden Sie:

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

z.B.:

ln -s file1 link1
6
Prem S

Es gibt zwei Arten von Links:

symbolische Links: Verweisen auf einen symbolischen Pfad, der den abstrakten Speicherort einer anderen Datei angibt

hardlinks: Beziehen Sie sich auf den spezifischen Speicherort der physischen Daten.

In Ihrem Fall Symlinks:

ln -s source target

sie können sich auf http://man7.org/linux/man-pages/man7/symlink.7.html beziehen

sie können zu harte Links erstellen

Ein fester Link zu einer Datei ist nicht vom ursprünglichen Verzeichniseintrag zu unterscheiden. Änderungen an einer Datei sind praktisch unabhängig vom Namen, der zum Verweisen auf die Datei verwendet wird. Harte Links verweisen normalerweise nicht auf Verzeichnisse und erstrecken sich möglicherweise nicht über Dateisysteme.

ln source link
3
wpp

Ich finde die Begriffe "Ziel" und "Verzeichnis" in den Man-Informationen etwas verwirrend.

Das Ziel ist der Ordner, zu dem wir einen Symlink erstellen, und das Verzeichnis der eigentliche Symlink (nicht das Verzeichnis, zu dem Sie einen Symlink erstellen). Wenn jemand die gleiche Verwirrung hat, fühlen Sie sich nicht allein.

So interpretiere ich das Erstellen eines Symlinks (unter Linux):

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

Sie können zu dem Ordner navigieren, in dem Sie den Symlink erstellen möchten, und den Befehl ausführen oder den vollständigen Pfad für Ihren Symlink anstelle von NAME-OF-YOUR-SYMLINK angeben.

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

OR

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

Ich hoffe das hilft denen (noch) etwas verwirrt.

2
mmmdearte

es gibt grundsätzlich zwei Arten von Links:

symbolische Links (Soft): Link zu einem symbolischen Pfad, der den abstrakten Speicherort einer anderen Datei angibt

hardlinks: Link zum spezifischen Ort der physischen Daten.

Beispiel 1: ln /root/file1 /root/file2

Oben sehen Sie ein Beispiel für einen Hardlink, über den Sie eine Kopie Ihrer physischen Daten erhalten können.

Beispiel 2: ln -s /path/to/file1.txt /path/to/file2.txt

Der obige Befehl erstellt eine symbolische Verknüpfung zu file1.txt.

Wenn Sie eine Quelldatei löschen, haben Sie in Soft nichts zum Ziel

wenn Sie das tun :

ls -lai

Sie werden sehen, dass es für die Symlinks eine andere Inode-Nummer gibt.

Für weitere Informationen lesen Sie man of ln auf Ihrem Linux-Betriebssystem.

Vielen Dank

2
Prabhat Singh