Normally, ls -la
would give this to me but I guess CentOS is different. I need to verify that a symbolic link exists.

- 68,823
- 31
- 180
- 259
-
You mean if the file the symbolic link is pointing to exists ? – Dominik Mar 11 '10 at 01:51
3 Answers
If you mean "Does the link actually point to a file?", (which I think you do because lthen:
if [[ -e "$file" ]]; then echo it is there; fi
If just want to test if the file is a symbolic link, than:
if [[ -h "$file" ]]; then echo it is a link; fi
This is tailored toward Bash, and not the most portable way. And as a little bit of trivia you don't need the quotes when using the double bracket syntax.
If you want to search for broken links than use find -L . -type l
.
If you just want ls to work again with its different colors for broken links, have a go at eval $(dircolors)

- 83,619
- 74
- 305
- 448
If you're looking to verify a file you already know you can use. Additionally file can be used to identify the type of file object:
[akula@jasonlawer ~]$ file /var/www/html/2001914
/var/www/html/2001914: symbolic link to `/tickets/rhev/2001914.zip_FILES/'
If it was provided as part of a package though the easiest thing to do is just use RPM to verify the package using
[akula@jasonlawer ~]$ rpm -V httpd

- 62,149
- 16
- 116
- 151
you can use
if [[ -f `readlink filename` ]]; then
....
fi
readlink command returns target of the symbolic link. -f tests if that file exists. Be carefull about ` character, its not " or '. It helps you to execute inner bash command like a inner query in an sql system.

- 111
- 2