Gentoo Archives: gentoo-user-el

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

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies

Subject Author
Re: [gentoo-user-el] check symlink validity mrJesus <mrJesusSuperstar@×××××.com>