[bash] Symlinks dereferenzieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
tobreh
Beiträge: 32
Registriert: 09.04.2003 08:21:26

[bash] Symlinks dereferenzieren

Beitrag von tobreh » 27.07.2006 10:53:36

Hallo.

Ich habe mich gestern zum ersten Mal mit Symlinks beschäftigt und dabei auf ein Hindernis gestossen. Ich bin grade dabei mir einen Satz bash Skripte zur Verwaltung meiner ogg vorbis Sammlung zusammenzuschustern. Eines dieser Skripte liest eine Reihe von Dateinamen über STDIN ein und liest die vorbiscomment tags aus. Dann legt es eine entsprechende Verzeichnisstruktur an und legt symlinks auf die realen oggfiles an. Das entspricht dann den verschiedenen Sichten wie man sie aus amarok kennt...

Wenn ich jetzt vorbiscomment auf die symlinks loslasse kann ich auch die Tags der Dateien ändern doch anscheinend wird da ein copy-on-write durchgeführt und die realen oggs werden nicht verändert sondern stattdessen eine lokale Kopie erzeugt und diese modifiziert (ein echt nettes Feature aber in diesem Fall nicht was ich will).

Wie kann ich die symlinks so dreferenzieren das ich auf die Ursprungsdateien zugreife? Muß ich da ein readlink(1) zwischenklemmen?

Danke und Gruß, Tobias

_mh_
Beiträge: 171
Registriert: 10.07.2006 11:52:28

Beitrag von _mh_ » 27.07.2006 11:27:14

Hallo,

ich denke die Idee mit dem readlink is schon gar nich schlecht. Ich wuerde dir sowas Empfehlen:

Code: Alles auswählen

LINK=`readlink $1`
if [ -z $LINK ]
then
     TARGET=$1
else
    TARGET=$LINK
fi
wobei $1 deine Eingabedatei und $TARGET dann die eigentliche Datei ist die du verwendest. Das musst du jetzt noch auf alle Dateien anwenden.

Antworten