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
1 δεν είμαι σίγουρος τι θες να κάνεις, αλλά αν πχ ψάχνεις όλα
2 τα broken symlinks τότε το ευκολότερο που μπορείς να κάνεις
3 είναι:
4
5 $ find /where/to/check -follow -type l 2>/dev/null
6
7 που θα επιστρέψει τα σπασμένα symlinks μόνο,
8 αφού τα σωστά θα τα "ακολουθήσει".
9 επίσης δε είμαι σίγουρος τι εννοείς για τους καταλόγους.
10 δεν αλλάζει κάτι αν το symlink δείχνει σε αρχεία ή φακέλους.
11
12
13 2012/2/17 Theo Chatzimichos <tampakrap@g.o>
14
15 > On Thursday 16 of February 2012 23:52:01 Alex-P. Natsios wrote:
16 > > 2012/2/16 Theo Chatzimichos <tampakrap@g.o>:
17 > > > Καλησπέρα,
18 > > >
19 > > > μήπως γνωρίζει κανείς κανένα τρόπο (σε bash,python,perl ή ruby) να
20 > ελέγχω
21 > > > αν ένα symlink είναι valid? Για καταλόγους μπορώ να τους ακολουθώ και
22 > να
23 > > > παίρνω το exit code μετά, για αρχεία όμως?
24 > >
25 > > θοδωρή αυτό που ζητάς και γίνετε.. και δεν γίνετε.. και είναι και
26 > > σχετικά περίεργο ανάλογα την πλατφόρμα.
27 > > για links και για τις περισσότερες πλατφόρμες (κυρίως unixοειδή )
28 > > υπάρχει το readlink.
29 > >
30 > > Πρόβλημα:
31 > > δεν ακολουθεί δυστυχώς chain links.
32 > > θα σου δώσει όμως το αρχείο στο οποιο κάνει point το link
33 > >
34 > > αν έχουμε ας πούμε το symlink ( testlink -> testfile )
35 > > το File.readlink("testlink") θα σου επιστρέψει testfile.
36 > >
37 > >
38 > > ΥΓ. τα παραπάνω ισχύουν για Ruby και Ruby on Rails.
39 >
40 > Thanks. Some dirty solutions by irc brainstorming:
41 >
42 > Python:
43 >
44 > if not os.path.islink('/path/to/symlink'):
45 > print "not a symlink"
46 > else:
47 > try:
48 > os.stat('/path/to/symlink')
49 > except OSError:
50 > print "symlink is broken"
51 >
52 > Bash:
53 >
54 > SYMLINK="/path/to/symlink"
55 > # Check for valid target file
56 > [[ -L $SYMLINK ]] && \
57 > cat $SYMLINK > /dev/null 2>&1 && \
58 > VALID=1
59 > # Check for valid target dir
60 > [[ -n VALID ]] || \
61 > [[ -L $SYMLINK ]] && \
62 > pushd $SYMLINK > /dev/null 2>&1 && \
63 > VALID=1
64 > popd > /dev/null 2>&1
65 > --
66 > Theo Chatzimichos (tampakrap) | blog.tampakrap.gr
67 > Gentoo KDE/Qt, Planet, Overlays
68 >

Replies

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