Was ist ein vollständiger Pfadname?

21

Ich würde gerne verstehen, was der vollständige Pfadname wirklich bedeutet. Ich habe eine Datei mit dem Namen my_script in meinem Ausgangsverzeichnis. Ich nahm an, dass der vollständige Pfadname ./my_script ist, was bedeutet, dass er sich im Stammordner befindet, aber ich bin nicht sicher. Kann mich bitte jemand aufklären?

Sosytee
quelle
Können Sie fragen, ob es möglich ist, einen Befehl zu schreiben, der die Liste der Dateien mit ihren Namen anzeigt? in einer anderen neuen frage ?
Braiam

Antworten:

30

Nein, deine Annahme ist falsch. Der vollständige Pfadname für my_scriptDatei aus Ihrem Home - Verzeichnis ist: /home/your_user_name/my_script. Wenn Sie ./my_scriptTerminal eingeben, versuchen Sie tatsächlich, das Skript auszuführen (sofern es ausführbar ist), und es wird nur ausgeführt, wenn es sich um Ihr aktuelles Arbeitsverzeichnis handelt /home/your_user_name/. Um das Skript auszuführen, können Sie auch den vollständigen Dateipfad verwenden, der wie gesagt ist /home/your_user_name/my_script.

Es wird angenommen, dass ein UNIX-Pfadname wie Internetadressen aussieht und sich anfühlt, was zu Kompatibilität führt. Den vollständigen Pfadnamen des aktuellen Arbeitsverzeichnisses finden Sie im Terminal mit dem folgenden Befehl:

pwd

Um den vollständigen Pfad für Ihr Benutzer-Ausgangsverzeichnis herauszufinden, können Sie Folgendes verwenden:

echo ~
echo $HOME
echo /home/$USER

Die obigen drei Befehle sind äquivalent.

Um den vollständigen Pfadnamen für eine Datei herauszufinden, können Sie den readlinkBefehl verwenden. Zum Beispiel in Ihrem Fall:

cd ~
readlink -f my_script
Radu Rădeanu
quelle
+1 readlinkenthüllt den aktuellen Pfad von Softlinks
lamino
7

Vollständiger Pfadname bedeutet wirklich den vollständigen Pfad zu dieser Datei oder diesem Ordner aus dem /Verzeichnis des Dateisystems .

Der vollständige Pfad zu Ihrem Skript lautet beispielsweise:

/home/your_username/my_script

Oder der vollständige Pfadname zur grepausführbaren Datei lautet

/bin/grep

Wie für die ./my_scriptdas Symbol .steht für das aktuelle Verzeichnis, so dass Sie actuallly sagen : „Sehen Sie unter dem aktuellen Verzeichnis nach einer Datei oder dem Namen my_script Ordnern“

hytromo
quelle
3

Um den vollständigen Pfad zu verstehen, müssen Sie zuerst den Ausgangspunkt kennen.

Das Stammverzeichnis /ist der Ausgangspunkt für * nix-basierte Betriebssysteme. Es enthält alle anderen Verzeichnisse sowohl des Systems als auch des Benutzers.

Das Basisverzeichnis des Benutzers /home/USERNAME/oder ~/kurz: Enthält die Dateien und Verzeichnisse des Benutzers. Zum Beispiel Bilder, Musik, Dokumente usw. Auf jedes dieser Verzeichnisse wird verwiesen, wie /home/USERNAME/DIRECTORYzum Beispiel Dokumente unter /home/USERNAME/Documents.

Wie bei Verzeichnissen werden Dateien auf die gleiche Weise referenziert. Beispielsweise kann auf eine Datei mit dem Namen, die my_scriptsich im Ausgangsverzeichnis des Benutzers sosyteebefindet, unter Verwendung des vollständigen Pfads /home/sosytee/my_scriptoder ~/my_scriptkurz referenziert werden .

Sowohl Dateien als auch Verzeichnisse können von überall im System mit ihren vollständigen Pfaden referenziert bzw. darauf zugegriffen werden. Außerdem kann man nur mit ihrem Namen darauf zugreifen, wenn sie sich im selben Verzeichnis befinden. Befindet sich der Benutzer beispielsweise bei der ~/Verwendung des Terminals, kann er my_scriptmit nur auf die Datei zugreifen my_script.

Zusätzlich kann auf Verzeichnisse und Dateien nur mit ihrem Namen zugegriffen werden, wenn sie in seiner PATH-Variablen platziert sind. Sie können sehen, was in PATH gespeichert ist, indem Sie verwenden echo $PATH.

Einfache Beispiele für den Zugriff auf Dateien über die Befehlszeile:

  • Der Benutzer befindet sich derzeit in /home/USERNAME/und möchte den catBefehl für eine Datei mit dem /home/USERNAME/DocumentsNamen foo.txt verwenden:

cat Documents/foo.txt

  • Der Benutzer befindet sich in ~/Documentsund möchte ein Skript mit dem Namen foo.shlocated ad ausführen ~/Scripts/Foo:

    sh ../Scripts/Foo/foo.sh

    oder

    sh ~/Scripts/Foo/foo.sh

Dies ist auf jeden Fall nur eine Zusammenfassung.

Weitere Informationen

Stef K
quelle
2

Der vollständige Pfadname ist der Pfad aus dem Stammverzeichnis (dh /). ./my_scriptist der relative Pfadname, da der Pfad relativ zum aktuellen Verzeichnis angegeben wird, das mit gekennzeichnet ist .. Wenn Sie sich also in Ihrem Home-Verzeichnis befinden, ist der vollständige Pfad an erster Stelle. wie /home/sosytee/my_script. Für Ihr Home-Verzeichnis gibt es die Abkürzung ~, dh Sie können auch schreiben ~/my_script. Aber das wird sich natürlich für jeden Benutzer in einen anderen Pfad auflösen.

Um den vollständigen Pfad Ihres aktuellen Telefonbuchaufrufs anzuzeigen pwd.

Nodebody
quelle
2

Ich nahm an, dass der vollständige Pfadname ./my_script ist

Nein ist es nicht. Dieser Weg ist relativ. Der Punkt am Anfang gibt das aktuelle Verzeichnis an:

$ ls ./my_script
my_script
$ cd ..
$ ls ./my_script
ls: cannot access ./my_script: No such file or directory

Wie Sie sehen, habe ich das Verzeichnis geändert und das wurde my_scriptnicht gefunden, was bedeutet, dass dies ./my_scriptkein absoluter Pfad ist.

Ich nahm an, dass der vollständige Pfadname ./my_script ist, was bedeutet, dass er sich im Stammordner befindet, aber ich bin nicht sicher.

Aus der Wikipedia :

[...] Ein vollständiger Pfad oder absoluter Pfad ist ein Pfad, der unabhängig vom Arbeitsverzeichnis oder den kombinierten Pfaden auf denselben Speicherort in einem Dateisystem verweist.

Da die ./my_scriptBedingung nicht erfüllt ist, dass ich die my_scriptDatei immer dann finden kann , wenn ich es bin , sollten wir schließen, dass es sich um einen relativen Pfad handelt.

Ein relativer Pfad ist ein Pfad relativ zum Arbeitsverzeichnis des Benutzers oder der Anwendung, sodass nicht der vollständige absolute Pfad angegeben werden muss.

Braiam
quelle
0

Hier ... ich nehme an, Sie fragen, weil Sie Ubuntu-Server unter Windows installiert haben ...

Kopieren Sie diesen Code in Ihren Ordner-Explorer unter Windows %userprofile%\AppData\Local\Packages

Das wird Ihnen den Heimatort zeigen ... es ist irgendwo auf Ihrem System versteckt

Doppelklicken Sie in diesem Ordner auf den Ordner für die Linux-Distribution, deren Dateien Sie anzeigen möchten:

  1. Ubuntu: CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
  2. openSUSE Leap 42: 46932SUSE.openSUSELeap42.2_022rs5jcyhyac
  3. SUSE Linux Enterprise Server 1246932SUSE.SUSELinuxEnterpriseServer12SP2_022rs5jcyhyac

Die Namen dieser Ordner können sich in Zukunft geringfügig ändern. Suchen Sie einfach nach einem Ordner, der nach der Linux-Distribution benannt ist.

Ihr Zuhause wird unter sein LocalState\rootfs\home

Die meisten dieser Informationen stammen aus Zugriff auf Ihre Ubuntu-Bash-Dateien in Windows (und Ihr Windows-Systemlaufwerk in Bash).

Hammao
quelle