Gentoo Archives: gentoo-user-el

From: mrJesus <mrJesusSuperstar@×××××.com>
To: gentoo-user-el@l.g.o
Subject: Re: [gentoo-user-el] check symlink validity
Date: Thu, 16 Feb 2012 22:39:29
Message-Id: CAJnvVWXhkqy9+HUrPUY+fpTAqip3q5Bj=YFWWLxwp9N2LD5_uQ@mail.gmail.com
In Reply to: Re: [gentoo-user-el] check symlink validity by Theo Chatzimichos
δεν είμαι σίγουρος τι θες να κάνεις, αλλά αν πχ ψάχνεις όλα
τα broken symlinks τότε το ευκολότερο που μπορείς να κάνεις
είναι:

    $ find /where/to/check -follow -type l 2>/dev/null

που θα επιστρέψει τα σπασμένα symlinks μόνο,
αφού τα σωστά θα τα "ακολουθήσει".
επίσης δε είμαι σίγουρος τι εννοείς για τους καταλόγους.
δεν αλλάζει κάτι αν το symlink δείχνει σε αρχεία ή φακέλους.


2012/2/17 Theo Chatzimichos <tampakrap@g.o>

> On Thursday 16 of February 2012 23:52:01 Alex-P. Natsios wrote: > > 2012/2/16 Theo Chatzimichos <tampakrap@g.o>: > > > Καλησπέρα, > > > > > > μήπως γνωρίζει κανείς κανένα τρόπο (σε bash,python,perl ή ruby) να > ελέγχω > > > αν ένα symlink είναι valid? Για καταλόγους μπορώ να τους ακολουθώ και > να > > > παίρνω το exit code μετά, για αρχεία όμως? > > > > θοδωρή αυτό που ζητάς και γίνετε.. και δεν γίνετε.. και είναι και > > σχετικά περίεργο ανάλογα την πλατφόρμα. > > για links και για τις περισσότερες πλατφόρμες (κυρίως unixοειδή ) > > υπάρχει το readlink. > > > > Πρόβλημα: > > δεν ακολουθεί δυστυχώς chain links. > > θα σου δώσει όμως το αρχείο στο οποιο κάνει point το link > > > > αν έχουμε ας πούμε το symlink ( testlink -> testfile ) > > το File.readlink("testlink") θα σου επιστρέψει testfile. > > > > > > ΥΓ. τα παραπάνω ισχύουν για Ruby και Ruby on Rails. > > Thanks. Some dirty solutions by irc brainstorming: > > Python: > > if not os.path.islink('/path/to/symlink'): > print "not a symlink" > else: > try: > os.stat('/path/to/symlink') > except OSError: > print "symlink is broken" > > Bash: > > SYMLINK="/path/to/symlink" > # Check for valid target file > [[ -L $SYMLINK ]] && \ > cat $SYMLINK > /dev/null 2>&1 && \ > VALID=1 > # Check for valid target dir > [[ -n VALID ]] || \ > [[ -L $SYMLINK ]] && \ > pushd $SYMLINK > /dev/null 2>&1 && \ > VALID=1 > popd > /dev/null 2>&1 > -- > Theo Chatzimichos (tampakrap) | blog.tampakrap.gr > Gentoo KDE/Qt, Planet, Overlays >

Replies

Subject Author
Re: [gentoo-user-el] check symlink validity Theo Chatzimichos <tampakrap@g.o>