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 |
> |