Как обычно, ls -la
дал бы это мне, но я думаю, что CentOS другой. Мне нужно убедиться, что символическая ссылка существует.
Если вы имеете в виду «Действительно ли ссылка указывает на файл?» (Что, я думаю, вы делаете, потому что тогда:
if [[ -e "$file" ]]; then echo it is there; fi
Если вы просто хотите проверить, является ли файл символической ссылкой, то:
if [[ -h "$file" ]]; then echo it is a link; fi
Это адаптировано к Bash и не является самым портативным способом. И в качестве небольшой мелочи вам не нужны кавычки при использовании синтаксиса с двойными скобками.
Если вы хотите искать неработающие ссылки, используйте find -L . -type l
.
Если вы просто хотите, чтобы ls снова работал с разными цветами для неработающих ссылок, попробуйте eval $(dircolors)
Если вы хотите проверить файл, который, как вы уже знаете, можно использовать. Дополнительно файл может использоваться для определения типа файлового объекта:
[akula@jasonlawer ~]$ file /var/www/html/2001914
/var/www/html/2001914: symbolic link to `/tickets/rhev/2001914.zip_FILES/'
Если он был предоставлен как часть пакета, то проще всего просто использовать RPM для проверки пакета с помощью
[akula@jasonlawer ~]$ rpm -V httpd
ты можешь использовать
if [[ -f `readlink filename` ]]; then
....
fi
Команда readlink возвращает цель символьной ссылки. -f проверяет, существует ли этот файл. Будьте осторожны с `символом, а не с 'или'. Он помогает вам выполнять внутреннюю команду bash, как внутренний запрос в системе sql.