Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как определить, является ли файл в Linux символической ссылкой. Вы рассмотрите три различных метода для достижения этого.
Сначала вы используете команду test с опцией -L для программной проверки типа файла. Затем вы проверите информацию о ссылке, изучив вывод команды ls -l. Наконец, вы узнаете, как определить целевой файл или каталог, на который указывает символическая ссылка, с помощью команды readlink.
Проверка символической ссылки с помощью test -L
На этом этапе вы узнаете, как проверить, является ли файл символической ссылкой, используя команду test с опцией -L.
Символическая ссылка (или symlink) — это особый тип файла, который указывает на другой файл или каталог. Можно представить ее как ярлык в Windows. Когда вы обращаетесь к символической ссылке, вы фактически обращаетесь к файлу или каталогу, на который она указывает.
Сначала создадим простой файл. Убедитесь, что вы находитесь в каталоге ~/project.
echo "This is the original file." > original_file.txt
Теперь создадим символическую ссылку на original_file.txt. Назовем символическую ссылку my_symlink.
ln -s original_file.txt my_symlink
ln: Команда, используемая для создания ссылок.-s: Эта опция сообщает командеlnсоздать символическую ссылку (вместо жесткой ссылки).original_file.txt: Целевой файл, на который будет указывать символическая ссылка.my_symlink: Имя создаваемой символической ссылки.
Теперь можно использовать команду test для проверки, является ли my_symlink символической ссылкой. Команда test используется для проверки типов файлов и сравнения значений. Она не выводит результат напрямую, но ее статус завершения указывает на успех (0) или неудачу (не ноль).
Можно объединить test с echo, чтобы увидеть результат.
test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
test -L my_symlink: Эта команда проверяет, является лиmy_symlinkсимволической ссылкой.&&: Это логический оператор "И". Если команда перед&&завершается успешно (статус завершения 0), то выполняется команда после&&.||: Это логический оператор "ИЛИ". Если команда перед||завершается неудачно (статус завершения не ноль), то выполняется команда после||.
Поскольку my_symlink действительно является символической ссылкой, вывод должен быть следующим:
my_symlink is a symbolic link
Теперь проверим обычный файл, например original_file.txt:
test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"
Вывод должен быть:
original_file.txt is NOT a symbolic link
Это подтверждает, что команда test -L правильно определяет символические ссылки.
Проверка ссылки по выводу команды ls -l
На этом этапе вы узнаете, как определить символические ссылки и их целевые объекты с помощью команды ls -l.
Команда ls используется для вывода списка файлов и каталогов. Опция -l предоставляет "расширенный формат вывода", который включает подробную информацию о каждом файле, такую как права доступа, владелец, размер и время последнего изменения.
Когда вы используете команду ls -l для символической ссылки, она отображает саму ссылку и показывает, на что она указывает.
Убедитесь, что вы находитесь в каталоге ~/project, где в предыдущем шаге вы создали файл original_file.txt и символическую ссылку my_symlink.
Теперь выполните команду ls -l:
ls -l
Вы должны увидеть вывод, похожий на следующий:
total 4
-rw-rw-r-- 1 labex labex 25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex 15 Feb 28 10:00 my_symlink -> original_file.txt
Разберем вывод для my_symlink:
- Первый символ
lуказывает, что это символическая ссылка. Для обычного файла здесь был бы-. - Права доступа (
rwxrwxrwx) для символических ссылок часто показываются как полные права, но фактические права определяются целевым файлом. - Количество ссылок обычно равно
1для символической ссылки. - Владелец и группа -
labex. - Размер (
15) - это количество символов в целевом пути (original_file.txt). - Метка времени - это время создания или изменения самой символической ссылки.
my_symlink: Имя символической ссылки.-> original_file.txt: Эта часть четко показывает, чтоmy_symlinkуказывает наoriginal_file.txt.
Сравним это с выводом для original_file.txt:
- Первый символ
-указывает, что это обычный файл. - Права доступа (
rw-rw-r--) показывают, кто может читать, записывать и выполнять файл. - Количество ссылок (
1) показывает, сколько жестких ссылок указывает на данные этого файла. - Размер (
25) - это фактический размер содержимого файла в байтах.
Использование команды ls -l - очень распространенный способ быстро определить символические ссылки и увидеть, на что они указывают.
Определение цели ссылки с использованием readlink
На этом этапе вы узнаете, как использовать команду readlink для определения целевого объекта символической ссылки.
В то время как команда ls -l отлично подходит для визуального обзора, команда readlink специально разработана для разрешения символических ссылок и вывода целевого пути. Это особенно полезно в скриптах или когда вам нужен только целевой путь без другой информации о файле.
Убедитесь, что вы находитесь в каталоге ~/project.
Используйте команду readlink для символической ссылки my_symlink, которую вы создали на предыдущих шагах:
readlink my_symlink
Выводом будет путь, на который указывает символическая ссылка:
original_file.txt
Это подтверждает, что my_symlink действительно указывает на original_file.txt.
У команды readlink есть полезная опция -f, которая рекурсивно следует по всем символическим ссылкам и разрешает их до абсолютного пути конечного целевого объекта. Это полезно, если у вас есть цепочка символических ссылок.
Создадим еще одну символическую ссылку, которая будет указывать на my_symlink:
ln -s my_symlink another_link
Теперь, если вы используете команду readlink для another_link без опции -f, она покажет непосредственный целевой объект:
readlink another_link
Вывод:
my_symlink
Но если вы используете команду readlink -f для another_link, она будет следовать по цепочке (another_link -> my_symlink -> original_file.txt) и выдаст абсолютный путь конечного целевого объекта:
readlink -f another_link
Вывод:
/home/labex/project/original_file.txt
Это показывает полный путь к исходному файлу. Команда readlink -f очень мощна для нахождения конечного назначения ссылки, даже если она вложена в другие ссылки.
Теперь вы узнали три способа работы с символическими ссылками: использование test -L для проверки, является ли файл ссылкой, использование ls -l для просмотра деталей ссылки и ее целевого объекта, а также использование readlink для определения целевого пути.
Резюме
В этом практическом занятии (лабораторной работе) вы узнали, как проверить, является ли файл символической ссылкой в Linux. Сначала вы создали обычный файл и символическую ссылку, указывающую на него. Затем вы использовали команду test с опцией -L для программной проверки, является ли заданный файл символической ссылкой, и увидели, как ее статус завершения можно использовать с логическими операторами (&& и ||) для вывода результата.
Вы также узнали, как визуально проверить символическую ссылку с помощью команды ls -l, которая отображает символ 'l' в начале поля прав доступа и показывает целевой объект ссылки. Наконец, вы изучили команду readlink для определения целевого пути символической ссылки и поняли ее полезность для написания скриптов и автоматизации.



