Назад | Перейти на главную страницу

Как проверить, существует ли символическая ссылка в CentOS

Как обычно, 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.