So erstellen Sie einen symbolischen Link, der eine Datei in jedes Unterverzeichnis einschließlich der untergeordneten Elemente verlinkt

386
Protocol Zero

Ich habe diese Frage versehentlich zu StackOverflow gestellt und sie haben vorgeschlagen, sie hier zu stellen.

Ich habe viele der anderen Beiträge hier gelesen und sie scheinen alle erfolgreich beantwortet zu werden, aber ich kann einfach nicht mitgehen. Ich bin immer noch sehr neu und möchte nicht versuchen, den Versuch und den Fehler zu versuchen, weil ich nicht sicher bin, ob ich ihn reparieren kann. Hier bin ich.

Ich habe eine Datei namens "php.ini", die sich im Stammordner des Hosts befindet. Ich brauche diesen Ordner, um auch in jedem einzelnen Ordner und Unterordner auf dem Server zu sein. Der Gastgeber schlug vor, "einen symbolischen Link in den Unterordnern zu erstellen", und das war der Umfang ihrer Hilfe. Ich fragte wie und sie sagten mir, es zu googeln. Also habe ich .. und bin verloren. Bisher habe ich folgendes:

ln -s /path/to/htdocs/php.ini LINK-NAME 

Aber ich bin mir nicht sicher, ob dies richtig ist, und ich bin mir nicht sicher, was das sein LINK-NAMEsoll oder was es tut. Ich weiß auch nicht, ob der Link in jedem Ordner und Unterordner erstellt wird. Da ich SSH verwenden soll, um diesen Befehl einzugeben, möchte ich sicherstellen, dass ich es richtig habe, bevor ich es versuche. Es tut mir leid, wenn es sich um eine Grundkenntnisfrage (noob) handelt, alle meine Suchanfragen geben nur ein Beispiel und keine von ihnen erklärt, was sie tun!

Ich danke dir sehr!

0
Kannst du nicht ein bisschen experimentieren? Versuchen Sie einfach den Befehl in einem * test * -Verzeichnis mit Unterverzeichnissen. Sie werden das Problem nicht vollständig lösen, aber hoffentlich wird "das, was der" LINK-NAME "sein soll, und" wenn dies den Link in jedem Ordner und Unterordner erzeugt "keine Geheimnisse mehr sein wird. Plus "Mann ln" ist dein Freund. "Sicherstellen, dass Sie es richtig haben, bevor Sie es versuchen" bringt Sie unter Linux nicht weit. :) Oder vielleicht fehlt Ihnen das Wissen, wie Sie ein Testverzeichnis erstellen und das Durcheinander aufräumen, das Sie dort verursachen können? Sind diese Befehle bekannt: `mkdir`,` cd`, `cp`,` rm`, rmdir`? Ich urteile nicht; nur Fragen. Kamil Maciorowski vor 6 Jahren 0

1 Antwort auf die Frage

0
Xen2050

Du könntest findjedes Verzeichnis in irgendeinem Pfad angeben

find path -type d 

und find find ausführen -exec(oder -execdirsoll sicherer sein) ln(mit -vfor verbose) darauf (vorausgesetzt, der vollständige Pfad, den Sie verknüpfen möchten, ist /path/to/htdocs/php.ini)

find path -type d -execdir ln -v -s /path/to/htdocs/php.ini '{}' ';' 

Oder anstelle von -execoder -execdirkönnten Sie die Ausgabe von find an Pipe weiterleiten xargs(nullgetrennte Ausgabe kann hilfreich sein -print0/ -0) oder in einem bash / sh-Skript usw. verwenden.


Zuerst sollten Sie jedoch überprüfen, ob sich dort bereits php.ini-Dateien befinden

find path -name php.ini 

Wenn Sie eine Reihe neuer php.ini-Links erstellt haben und überprüfen möchten, worauf sie tatsächlich verweisen, verwenden Sie

find path -name php.ini -execdir readlink '{}' ';' 

oder wenn Sie einen Fehler beim Erstellen einer ganzen Reihe von fehlerhaften php.ini-Dateien machen, können Sie sie mit löschen

find path -name php.ini -delete