SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
Post Reply
ice
Posts: 140
Joined: 2002-08-21 13:08
 

SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by ice »

Folgendes nicht gerade abwegiges Problem:

Ich möchte mehrere Versionen einer Software installieren und natürlich nicht diese zigmal kopieren. Ich möchte die Kopien aus symlinks erstellen.

Grundsätzlich kein Problem, wenn es um ganze Verzeichnisse geht aber wenn ich jetzt ein Verzeichnis mit 100 Dateien habe und darin nun eine config liegt, die eine echte Datei sein muss, da diese für die Programmkopie die Einstellungen enthält, muss ich ja 100 symlinks von hand anlegen.

Da ich aber faul bin und Linux für mächtiger halte muss es dafür doch eine andre Lösung geben. Ich stelle mir soetwas wie ein automatisches Erzeugen von Link von einfach allen in den Verzeichnissen befindlichen Dateien vor, also der Parameter -R bei den meisten Programmen.

Nun steht in "man ln" soetwas wie "ist die letzte Angabe eine bestehendes Verzeichnis, werden rekursiv für alle Dateien der Verzeichnisse Links erstellt..." Das hat bei meinen Versuche aber nicht geklappt. Hab ichs falsch verstanden oder nicht die richtige Syntax benutzt?

Hat jemand mehr Kenntnisse über ln ?
Last edited by ice on 2003-04-03 16:00, edited 1 time in total.
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by dodolin »

Linke auf das Verzeichnis, das sollte schon ausreichen.
ice
Posts: 140
Joined: 2002-08-21 13:08
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by ice »

nicht
ICE wrote:wenn ich jetzt ein Verzeichnis mit 100 Dateien habe und darin nun eine config liegt, die eine echte Datei sein muss,
Entschuldige Du hast das Problem nicht erkannt, oder ich hab mich blöd ausgedrückt.

Es geht um die Verzeichnisse, die ich nicht komplett linken kann.
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by dodolin »

Sorry, dann hatte ich dich in der Tat nicht richtig verstanden. Ist halt nicht immer so einfach... :wink:
NAME
ln - make links between files

SYNOPSIS
ln [OPTION]... TARGET [LINK_NAME]
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... --target-directory=DIRECTORY TARGET...

DESCRIPTION
Create a link to the specified TARGET with optional
LINK_NAME. If LINK_NAME is omitted, a link with the same
basename as the TARGET is created in the current direc­
tory. When using the second form with more than one TAR­
GET, the last argument must be a directory; create links
in DIRECTORY to each TARGET.
Create hard links by
default, symbolic links with --symbolic. When creating
hard links, each TARGET must exist.
Ich habe mal fettgemacht, was du suchst.

Jetzt brauchst du nur noch einen Mechanismus, der dir die zu linkenden Dateinamen ausgibt, den du dann über Backticks ` einbaust. Das könnte z.B. ein ls in Verbindung mit den nötigen RegEx' sein, die auf die gewünschten Dateinamen matcht.
ice
Posts: 140
Joined: 2002-08-21 13:08
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by ice »

8O Und das jetzt bitte mal für nen Dummen. :?
dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe
Contact:
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by dodolin »

*LOL*

Beispiel:

Code: Select all

[dominik@sklave dominik]$ cd /tmp
[dominik@sklave /tmp]$ ls /home/www/public/
crypt.html         htpasswd.users  links.txt  urls_linux_buecher.txt
firewall-rules.sh  index.html      old.html
html               info.php        secure
[dominik@sklave /tmp]$ mkdir symlinks
[dominik@sklave /tmp]$ ln -s `ls /home/www/public/*.html` symlinks/
[dominik@sklave /tmp]$ cd symlinks/
[dominik@sklave symlinks]$ ls -l
total 0
lrwxrwxrwx    1 dominik  users          27 Apr  3 17:41 crypt.html -> /home/www/public/crypt.html
lrwxrwxrwx    1 dominik  users          27 Apr  3 17:41 index.html -> /home/www/public/index.html
lrwxrwxrwx    1 dominik  users          25 Apr  3 17:41 old.html -> /home/www/public/old.html
Du musst halt ein ls Kommando finden, welches dir genau die gewünschten Dateien ausspuckt. Ich habe ja keine Ahnung, wie das konkret bei dir aussieht...? Du kannst ja das ls Kommando auch "pur" testen, also ohne das ln aussenrum. Und wenn dann alles passt, setzt du es ein.
ice
Posts: 140
Joined: 2002-08-21 13:08
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by ice »

Mann sauber das ists ja schon.

Ich mach einfach *.* draus. Es sind nur 2-3 Feilen, die echt sein müssen.

Ich danke Dir.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by captaincrunch »

Ich mach einfach *.*
Ein Sternchen sollte genügen ... wir sind hier ja nicht bei Betriebssystemen aus Redmont ... :wink:
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
ice
Posts: 140
Joined: 2002-08-21 13:08
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by ice »

:oops: Schande auf mein Haupt. Ich reiss mich jetzt mal zusammen.

hüfp -> debian Installer
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by thorsten »

das Problem hatte ich gestern auch bei der Installation von mysql 4.0.12 ;)

Das hab ich mir ausgedacht:

Code: Select all

# cd /usr/local/bin
# for i in /usr/local/mysql/bin/*  ; do ln -s "$i" $(basename "$i" ) ; done
Aber das ist noch genialer, hätte die man-page mir auch verraten können:

Code: Select all

# cd /usr/local/bin
# for i in /usr/local/mysql/bin/*  ; do ln -s "$i" ; done
Sieht zwar umständlicher aus, als das da oben, aber evtl. bekommt ja der ein oder andere eine Eingebung dadurch 8)
Anonymous
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by Anonymous »

Wäre ein lndir nicht viel einfacher?

LNDIR(1) LNDIR(1)

NAME
lndir − create a shadow directory of symbolic links to another direc‐

tory tree

....

If you add files, simply run lndir again. New files will be silently
added. Old files will be checked that they have the correct link.
....

If a file in fromdir is a symbolic link, lndir will make the same link
in todir rather than making a link back to the (symbolic link) entry in
fromdir. The −ignorelinks flag changes this behavior.
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal
 

Re: SymLinks automatisch erzeugen: ln -s /verz/* /verz/* ??

Post by thorsten »

JO DA IST DER BEFEHL!

Danke, ich hab gehofft jemand äußert sich dazu. Den lndir hab ich mal bei einem Bekannten gesehen, mich aber nicht mehr an den Namen erinnert :roll:
Post Reply