Change in behavior to stat(1)

Jilles Tjoelker jilles at stack.nl
Fri Mar 4 19:05:47 UTC 2011


On Mon, Feb 28, 2011 at 11:15:39AM -0600, Stephen Montgomery-Smith wrote:
> I had a little script that would remove broken links.  I used to do it 
> like this:

> if ! stat -L $link > /dev/null; then rm $link; fi

> But recently (some time in February according to the CVS records) stat 
> was changed so that stat -L would use lstat(2) if the link is broken.

> So I had to change it to

> if stat -L $link | awk '{print $3}' | grep l > /dev/null;
> then rm $link; fi

> but it is a lot less elegant.

> What is the proper accepted way to remove broken links?

A better answer to your original question was already given, but for
that command, isn't it sufficient to do

  if ! [ -e $link ]; then rm $link; fi

All test(1)'s primaries that test things about files follow symlinks,
except for -h/-L.

-- 
Jilles Tjoelker


More information about the freebsd-stable mailing list