См. символические ссылки Linux
Обновлено: 21.11.2024
Существует два способа найти символическую ссылку или программную ссылку в операционных системах на основе UNIX, таких как Linux, Solaris, BSD или IBM AIX. Первый способ — использовать команду ls в UNIX, которая отображает файлы, каталоги и ссылки в любом каталоге, а другой способ — использовать команду UNIX find, которая имеет возможность искать файлы любого типа, например. файл, каталог или ссылку. В этом руководстве по командам UNIX мы увидим примеры обеих этих команд UNIX для поиска программной ссылки в любом каталоге. Если вы новичок в операционной системе UNIX и не знакомы с концепцией мягкой ссылки и жесткой ссылки, я бы порекомендовал освоить ее, поскольку это одна из самых мощных функций системы на основе UNIX.
Еще одна концепция, которую очень важно усвоить, — это права доступа к файлам и каталогам, поскольку UNIX предоставляет другой уровень разрешений и разрешение на наследование ссылок для папки назначения, на которую они указывают.
Это также очень популярный вопрос на собеседованиях по Linux, который задают системным администраторам и разработчикам. В любом случае, давайте начнем с первого примера того, как найти символическую ссылку в UNIX с помощью команды «ls»:
Кстати, если вы новичок в мире Linux, я также рекомендую вам присоединиться к практическому курсу, такому как «Мастерство Linux: освоить командную строку Linux за 11,5 часов», чтобы изучить некоторые важные команды Linux, такие как эта, чтобы стать более продуктивный и уверенный пользователь Linux.
Командаls для поиска символической ссылки в системах UNIX
когда вы запускаете команду ls -lrt в любом каталоге, она печатает сведения о разрешениях для каждого файла и каталога, если вы внимательно посмотрите на ссылки, строка которых начинается с маленькой буквы L ( l для ссылки).
Если вы объедините вывод команды ls с grep и используете регулярное выражение для поиска всех записей, начинающихся с маленькой буквы L, вы сможете легко найти все программные ссылки в любых каталогах.
Вот полный пример команды UNIX для поиска символической ссылки с помощью команд ls и grep:
Символ ^ — это специальное регулярное выражение, означающее начало строки. Вы также можете ознакомиться с курсом Udemy «Изучай Linux за 5 дней» и «Повысь уровень своей карьеры», чтобы узнать больше о параметрах ls и других важных командах Linux.
Отображение программной ссылки с помощью команды «Найти» в Unix
Еще один способ найти все программные или символические ссылки — использовать команду find в UNIX. Поскольку все операционные системы на основе UNIX, такие как Linux, Solaris или IBM AIX, поддерживают поиск, это не только доступный, но и самый мощный способ найти программную ссылку в любом каталоге или подкаталоге.
Когда вы используете команду find с типом параметра и указываете тип как маленькую L ( l для ссылки), отображаются все программные ссылки по указанному пути.
Например, по примеру команды find будут показаны все программные ссылки в текущем каталоге и его подкаталоге:
Здесь символ точки (.) обозначает текущий каталог.
Если вы хотите ограничить этот поиск только текущим каталогом, а не подкаталогом, вы можете указать максимальную глубину как 1, используя параметр -maxdepth команды find, как показано в следующем примере:
Как я уже говорил, команда find it очень полезна, но большинство пользователей UNIX не использует find в полной мере. Они даже не знают о некоторых полезных опциях, подобных этой.
Если вы хотите узнать больше о дополнительных параметрах поиска и других важных командах, я предлагаю вам пройти онлайн-курс «Основы системного администрирования Linux» для изучения команд Linux от Pluralsight. Вы можете получить это бесплатно, подписавшись на 10-дневную бесплатную пробную версию.
Это были два способа найти программную ссылку или символическую ссылку в операционной системе UNIX, например. Linux, Solaris или IBM AIX. Я все еще ищу команду UNIX, которая может найти все неработающие ссылки, и обновлю этот пример, когда получу это. Кстати, если вы, ребята, знаете какие-либо другие способы найти, показать или отобразить программную ссылку в любом каталоге или PATH, поделитесь, пожалуйста.
- Как планировать задания cron в Linux (пример crontab)
- 10 примеров сетевых команд в Unix (nslookup)
- 7 лучших курсов по Linux для разработчиков и облачных инженеров (курсы)
- 5 Пример команд kill в Unix и Linux (пример)
- Как найти все файлы, соответствующие определенному тексту в Linux (grep)
- 10 примеров использования команды chmod в Linux (chmod)
- Как отправить почту с вложениями из Linux? (почта)
- Мои любимые курсы Linux для инженеров DevOps (онлайн-курсы)
- Как работает команда nslookup в UNIX? (ответ)
- 10 примеров использования команды lsof в Linux? (примеры)
- Как использовать команду netstat, чтобы определить, какой процесс прослушивает порт? (пример)
- Linux find + du + grep пример (пример)
- 5 лучших онлайн-курсов для углубленного изучения Linux (онлайн-курсы)
- 10 примеров команды curl в Linux (cURL)
- 10 лучших курсов для изучения командной строки Linux (курсы)
- Практическое руководство по командам, редакторам и программированию оболочки Linux (руководство)
П. С. — Если вы новый пользователь Linux и ищете бесплатные онлайн-курсы, чтобы начать знакомство с Linux, вам следует ознакомиться с моим списком бесплатных курсов по Linux для программистов, ИТ-специалистов и системных администраторов.
Мы уже знали, что такое символические ссылки, символические ссылки или программные ссылки, и как найти и удалить неработающие символические ссылки из нашей системы Linux. Сегодня мы узнаем, как получить список Symlinks в Linux. Если вы давным-давно создали какие-то символические ссылки и совершенно о них забыли, этот быстрый совет поможет вам легко найти символические ссылки с помощью команды «найти».
Список симлинков в Linux
Чтобы вывести список всех символических ссылок или символических ссылок или программных ссылок в системе Linux, выполните:
- / — представляет всю файловую систему.
- -type – относится к типу файла.
- l — ссылка на символическую ссылку.
Эта команда будет искать все доступные символические ссылки во всей файловой системе. Это займет некоторое время в зависимости от размера вашей файловой системы. Пожалуйста, наберитесь терпения!
Если вы хотите ограничить поиск символических ссылок в определенном каталоге, укажите его путь, как показано ниже.
Например, следующая команда выведет список всех программных ссылок в текущем каталоге:
Обратите внимание на одну точку (.) в приведенной выше команде. В Linux одна точка (.) используется для обозначения текущего (настоящего) каталога. Двойная точка (..) используется для обозначения родительского каталога.
Пример вывода:
Если вы хотите искать символические ссылки в другом каталоге, замените точку (.) на путь к каталогу.
Если вам нужен подробный вывод, включая метки времени, права доступа к файлам, владельца и группу, вместо этого используйте следующую команду:
Пример вывода:
Список символических ссылок в Linux
Как вы, возможно, заметили в выводах выше, команда find ищет символические ссылки в текущем каталоге и его подкаталогах.
Если вы хотите отобразить все символические ссылки на один уровень ниже в текущем каталоге, используйте флаг maxdepth, как показано ниже.
Другой способ найти список символических ссылок в текущем каталоге:
Это рекурсивно перечислит все символические ссылки в текущем каталоге. Кроме того, он показывает фактические файлы, на которые указывает.
Символическая ссылка, также известная как программная ссылка, представляет собой своего рода указатель, указывающий на расположение папки или файла в вашей системе. Некоторые из этих ссылок создаются по умолчанию в вашей системе, тогда как вы сами можете создавать символические ссылки вручную для любых желаемых файлов или папок. Эта статья объяснит вам различные методы, с помощью которых вы можете перечислить все символические ссылки в Linux. Для этого руководства я использовал Linux Mint 20, но те же шаги будут работать в любом дистрибутиве Linux.
Три способа перечисления символических ссылок в Linux
Чтобы вывести список всех символических ссылок в Linux Mint 20 в зависимости от ваших конкретных требований, вы можете выбрать любой из следующих трех способов:
Если вы хотите вывести список всех символических ссылок вашей текущей файловой системы в Linux Mint 20, вы можете сделать это, выполнив команду, показанную ниже:
Выполнение этого варианта команды «find» займет разумное время, поскольку для поиска всех имеющихся у нее символических ссылок необходимо пройти через всю вашу файловую систему. После его выполнения вы сможете увидеть очень длинный список всех символических ссылок в вашей текущей файловой системе, как показано на следующем рисунке:
Теперь, если вы хотите найти все символические ссылки вашего текущего рабочего каталога, вы можете сделать это, выполнив команду, показанную ниже:
Эта команда будет выполнена относительно быстро, после чего вы сможете увидеть список всех символических ссылок вашего текущего рабочего каталога, как показано на следующем рисунке:
Вы даже можете перечислить все символические ссылки любого конкретного каталога с помощью команды, показанной ниже:
Вам нужно заменить DirectoryName на имя каталога, символические ссылки которого вы хотите найти, вместе с его полным путем.
Эта команда также будет легко выполнена, после чего вы сможете увидеть список всех символических ссылок указанного вами каталога, как показано на следующем рисунке:
Заключение
В зависимости от ваших требований к использованию вы можете выбрать любой из трех методов, обсуждаемых в этой статье, для вывода списка всех символических ссылок вашей системы. Все эти методы основаны на однострочных командах, поэтому вы сможете выполнять их очень быстро.
Похожие сообщения:
Карим Буздар
Об авторе: Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Вы можете связаться с Каримом в LinkedIn
Поиск
Об этом сайте
Последние руководства
сообщить об этом объявлении
Какая команда linux показывает полный путь?
8 ответов 8
realpath доступен не во всех разновидностях Linux, но readlink должен быть.
Вышеизложенное должно сработать.
В качестве альтернативы, если у вас не установлено ни одно из вышеперечисленных приложений, вы можете сделать следующее, если у вас установлен Python 2.6 (или более поздней версии)
должно помочь.
man realpath показывает внизу, что он является частью «GNU coreutils», который, я почти уверен, всегда присутствует в Ubuntu, поэтому, хотя @IanStapletonCordasco говорит, что «realpath недоступен во всех вариантах Linux», он должен по крайней мере, быть доступным на всех версиях Ubuntu и Ubuntu, которые, как мне кажется, являются производными.
разновидности unix -> ll symLinkName
OSX -> readlink symLinkName
Разница в том, что при первом способе путь символической ссылки будет отображаться мигающим, а при втором способе он будет просто выводиться на консоль.
Вопрос касался именно полного/абсолютного пути, а не относительного пути (../../file.txt). Оба этих ответа дадут относительный путь.
Еще один способ просмотреть информацию — команда stat, которая покажет больше информации. Команда stat ~/.ssh на моем дисплее компьютера
Надеюсь, это может кому-нибудь помочь.
Вы можете использовать awk с системным вызовом readlink, чтобы получить эквивалент вывода ls с полными путями символических ссылок. Например:
Отобразится, например,
ls может сделать это без readlink; просто используйте ls -l . Это также вообще не работает, пытается сделать это для всего в каталоге (кроме ссылок), и если ваш ls настроен на использование цветов, awk полностью ломается. просто используйте найти . -maxdepth 1 -тип l -ls | awk '
На моем Mac у меня есть следующее:
Например, создайте символическую ссылку на каталог: ln -s /Users/test/play/game game
Тогда, если я использую символическую ссылку для перехода к каталогу: cd game. Если я ввожу команду cmd: pwd, фактический каталог, в котором вы находитесь: ~
Если я по какой-то причине решу, что действительно хочу перейти в каталог: /Users/test/play/game, у меня есть псевдоним в моей настройке .bash_profile:
после использования вышеуказанного псевдонима cdp, за которым следует команда pwd, текущий каталог: /Users/test/play/game
Здесь я дам краткий обзор и анализ, но для тех, кто TL;DR, вот однострочник для bash, полезный для привязки рабочего каталога:
Или вы можете использовать любое другое имя файла вместо $0, чтобы определить его реальное местоположение.
Существует не только проблема определения реального пути к какому-либо файлу, но особенно некоторый скрипт, вызываемый по символической ссылке из другого места и нуждающийся в ссылке на другие ресурсы относительно своего реального рабочего каталога.
Подробности следуют. Предположим, у нас есть реальный скрипт или файл и символическая ссылка на него:
И частью GNU coreutils является несколько очень полезных команд:
см. также в оригинале:
Также очень хорошей комбинацией в скриптах является использование имени каталога в скрипте
чтобы завершить это, вы можете использовать в скрипте
или получить и сохранить в переменной домашний каталог реального сценария и сохранить код, чтобы получить реальный путь к сценарию realscript.sh:
Где "$0" определяется как "я" в сценарии оболочки.
Чтобы все протестировать, мы помещаем симлинк в /home/test2/, меняем некоторые дополнительные вещи и запускаем/вызываем его из корневого каталога:
Пожалуйста, попробуйте сами написать измененные результаты :)
Обновление 2021, также есть команда:
readlink — вывести разрешенные символические ссылки или канонические имена файлов
ОПИСАНИЕ Обратите внимание, что realpath(1) предпочтительнее использовать для функций канонизации.
Читайте также: