Ln (Unix)

ln
Ln-example-command.gif
Beispiel Verwendung von ln Dienstprogramm
Originalautor (en) AT & T Bell Laboratories
Entwickler (en) Verschiedene Open Source und kommerziell Entwickler
Erstveröffentlichung 3. November 1971; vor 50 Jahren
Betriebssystem Unix, Unix-artig, Ibm i
Plattform Plattformübergreifend
Typ Befehl
Lizenz CoreUtils: GPLV3+

Das ln Befehl ist ein Standard UNIX -Befehl Dienstprogramm zum Erstellen von a harte Verbindung oder ein symbolischer Link (Symlink) zu einer vorhandenen Datei oder einem vorhandenen Verzeichnis.[1] Die Verwendung eines harten Links ermöglicht mehrere Dateinamen mit demselben assoziiert sein Datei da ein hartes Link auf die zeigt Inode einer bestimmten Datei, deren Daten auf gespeichert werden Scheibe. Auf der anderen Seite sind symbolische Links spezielle Dateien, die sich auf andere Dateien beziehen Name.[2]

Das ln Der Befehl standardmäßig erstellt harte Links und wenn er mit dem aufgerufen wird Befehlszeile Parameter ln -s erstellt symbolische Links.[3] Die meisten Betriebssysteme verhindern harte Verbindungen zu Verzeichnisse von der Erstellung, da eine solche Fähigkeit die Struktur von a stören könnte Dateisystem und stören den Betrieb anderer Versorgungsunternehmen.[4] Das ln Der Befehl kann jedoch verwendet werden, um symbolische Links zu nicht existierenden Dateien zu erstellen.[2]

Geschichte

LN erschien in Ausgabe 2 der X/offen Portabilitätsrichtlinien.[5] Die Version von ln gebündelt GNU CoreUtils wurde von Mike Parker und David Mackenzie geschrieben.[6] Der Befehl ist als separates Paket für verfügbar Microsoft Windows Im Rahmen des Unxutils Sammlung von einheimisch Win32 Häfen von gemeinsamen GNU-Unix-ähnlichen Versorgungsunternehmen.[7] Das ln Der Befehl wurde auch auf die portiert Ibm i Betriebssystem.[8]

Links

Links ermöglichen es mehr als einen Dateinamen, sich auf dieselbe Datei wie im Fall von a zu beziehen harte Verbindung oder handeln als Zeiger zu einem Dateinamen wie im Fall von a weicher Link. Sowohl harte Links als auch weiche Links können von der erstellt werden ln Befehl. Speziell,

  1. Harte Links, auch einfach als Links bekannt, sind Objekte, die den Dateinamen mit dem assoziieren Inodeund daher der Dateiinhalt selbst.[1] Eine bestimmte Datei auf der Festplatte könnte mehrere Links über die verstreut sein Verzeichnishierarchie, da alle Links gleichwertig sind, da sie alle mit demselben assoziieren Inode.[9] Das Erstellen eines Links kopiert daher nicht den Inhalt der Datei, sondern führt lediglich dazu, dass ein anderer Name demselben Inhalt zugeordnet ist. Jedes Mal, wenn ein harter Link erstellt wird, ist a Linkzähler that is a part of the Inode -Struktur wird inkrementiert; Eine Datei wird erst gelöscht, wenn ihre Referenzzahl Null erreicht.[1][10] Harte Links können jedoch nur darauf erstellt werden Dateisystem; Dies kann sich als Nachteil erweisen.[11]
  2. Symbolische Links sind spezielle Dateien, die, wenn sie während der Auflösung von Pathname aufgetaucht sind, die ändern PATHNAME -Lösung zu dem Ort gebracht werden, den die symbolische Verbindung enthält. Der Inhalt der symbolischen Verbindung ist daher das Ziel Weg Zeichenfolge, die auch mit dem untersucht werden kann readlink Befehlszeile Dienstprogramm.[12] Der symbolische Link kann eine beliebige Zeichenfolge enthalten, die sich nicht auf den Speicherort einer vorhandenen Datei bezieht. Ein solcher symbolischer Link schlägt fehl, bis eine Datei an dem Ort erstellt wird, der durch den symbolischen Link enthalten ist. Im Gegensatz dazu fällt ein symbolischer Link zu einer vorhandenen Datei fehl, wenn die vorhandene Datei an einen anderen Ort verschoben (oder umbenannt) wird.[9]

Spezifikation

Das ln Dienstprogramm für Systeme, die mit dem konform sind Einzel -Unix -Spezifikation wird im Dokument Shell and Utilities (XCU) angegeben, das Teil der einzelnen Unix -Spezifikation ist.[13] Ein meist identisches Dokument ist Teil von Posix.[5]

Die Spezifikation beschreibt zwei Möglichkeiten, die aufzurufen ln Dienstprogramm. Speziell,

Im Aufruf "Einzeldatei" die ln Das Dienstprogramm erstellt einen neuen harten Link (Verzeichniseintrag) für die von der angegebene Quelldatei source_file Operand am Zielweg, das von der angegeben wurde target_file Operand. Aber wenn die -s Die Option wird angegeben, ein symbolischer Link wird erstellt.
ln [-fs] [-L|-P] SOURCE_FILE TOIGE_FILE
Im Aufruf "Mehrfachdatei" der ln Dienstprogramm erstellt einen neuen harten Link (Verzeichniseintrag) oder wenn die -s Die Option wird angegeben, ein symbolischer Link für jede von der angegebene Datei source_file Operand, an einem Zielpfad in einem von Operand benannten Verzeichnis target_dir.
ln [-fs] [-L|-P] source_file_1 source_file_2 ... target_dir

Die Spezifikation gibt auch die Befehlszeilenoptionen an, die unterstützt werden müssen:

-f Erzwingen Sie, dass vorhandene Zielpfadnamen entfernt werden, um die Verbindung zuzulassen.
-L Für jeden source_file Operand, die eine Datei nennt, die ein symbolischer Link ist, erstellen Sie einen harten Link zu der Datei, auf die der symbolische Link verwiesen wird.
-P Für jeden source_file Operand, die eine Datei nennt, die ein symbolischer Link ist, erstellen Sie einen (harten) Link zum symbolischen Link selbst.
-s Erstellen Sie symbolische Links anstelle von harten Links. Wenn die Option -S angegeben ist, werden die Optionen -l und -p still ignoriert.
Wenn mehr als eine der gegenseitig exklusiven Optionen -L und -P wird angegeben, die letzte angegebene Option bestimmt das Verhalten des Nutzens.
Wenn die -s Option ist nicht angegeben und auch a -L Noch a -P Die Option wird angegeben, die Implementierung definiert, welche der der -L und -P Optionen werden als Standard verwendet.

Wenn weder die Zieldatei noch ein Zielverzeichnis angegeben sind, werden Links in der aktuellen Zeit erstellt Arbeitsverzeichnis.

Siehe auch

Verweise

  1. ^ a b c Kernighan, Brian W.; Pike, Rob (1984). Die UNIX -Programmierumgebung. Englewood Cliffs, N.J.: Prentice-Hall. p.59. ISBN 013937681X.
  2. ^ a b "GNU CoreUtils: LN -Aufruf". gnu.org. Free Software Foundation, Inc.. Abgerufen 7. August 2015.
  3. ^ "LN - Die offenen Gruppenbasis -Spezifikationen Ausgabe 7". Pubs.opengroup.org. Die IEEE und die offene Gruppe. Abgerufen 7. August 2015.
  4. ^ "Warum dürfen harte Links Verzeichnisse in Unix/Linux nicht erlaubt?". unix.stackexchange.com. Abgerufen 7. August 2015.
  5. ^ a b ln- Shell and Utilities Referenz, Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe
  6. ^ ln (1)- -Linux Allgemeine Befehle Handbuch
  7. ^ "Native Win32 -Ports einiger GNU -Dienstprogramme". Unxutils.SourceForge.net.
  8. ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). IBM. Abgerufen 2020-09-05.
  9. ^ a b Loosemore, Sandra; Stallman, Richard M.; McGrath, Roland; Oram, Andrew; Drepper, Ulrich. Das GNU C -Bibliotheksreferenzhandbuch (PDF). Free Software Foundation, Inc. p. 392. Abgerufen 7. August 2015.
  10. ^ "Unix sprechen: Es geht nur um den Inode". ibm.com. IBM Developerworks. Abgerufen 7. August 2015.
  11. ^ Bovet, Daniel P.; Cesati, Marco (2005). Verständnis des Linux -Kernels (3. Aufl.). Boston, MA: Safari -Tech -Bücher online. p. 14. ISBN 0596005652.
  12. ^ "Readlink (1) - Linux Man Page". Linux.die.net. Abgerufen 7. August 2015.
  13. ^ "Die Single Unix -Spezifikation, Version 4 - Übersicht". unix.org. unix.org. Abgerufen 7. August 2015.

Externe Links