- Как удалить (удалить) символические ссылки в Linux
- How to Remove (Delete) Symbolic Links in Linux
- В этом руководстве мы покажем вам , как удалит символические ссылки в системах Linux / UNIX с использованием rm, unlink и find команды.
- Прежде чем вы начнете
- Удалить символические ссылки с rm
- Удалить символические ссылки с unlink
- Найти и удалить неработающие символические ссылки
- Вывод
- Как удалить (удалить) символические ссылки в Linux
- Подготовка
- Удалите символические ссылки с помощью rm
- Удалить символические ссылки с помощью unlink
- Найти и удалить битые символические ссылки
- Выводы
- How To: Linux Delete Symbolic Link ( Softlink )
- Linux Delete Symbolic Link File
- Examples
- Getting confirmation prompt
- Delete Symbolic Link Directory
- Remove Symbolic Links with find command
- Find all symbolic links with find and delete them
- Finding and deleting broken symbolic links
- Again, we use the find command:
- Linux Remove Symbolic Link Command Options
- Conclusion
- Поиск и удаление битых символьных ссылок в Linux
- Символьные ссылки
- Создание символьных ссылок
- Битые символьные ссылки
- Поиск битых символьных ссылок (команда find)
- Анализ битых символьных ссылок
- Удаление битых символьных ссылок
- Утилита symlinks
- Заключение
Как удалить (удалить) символические ссылки в Linux
How to Remove (Delete) Symbolic Links in Linux
В этом руководстве мы покажем вам , как удалит символические ссылки в системах Linux / UNIX с использованием rm, unlink и find команды.
Символическая ссылка, также известная как символическая ссылка, представляет собой специальный тип файла, который указывает на другой файл или каталог. Это что-то вроде ярлыка в Windows. Символьная ссылка может указывать на файл или каталог в той же или другой файловой системе или разделе.
Прежде чем вы начнете
Чтобы удалить символическую ссылку, вам нужно иметь права на запись в каталог, который содержит символическую ссылку. В противном случае вы получите ошибку «Операция не разрешена».
Когда вы удаляете символическую ссылку, файл, на который она указывает, не затрагивается.
Используйте ls -l команду, чтобы проверить, является ли данный файл символической ссылкой, и найти файл или каталог, на который указывает символическая ссылка.
Первый символ «l» указывает, что файл является символической ссылкой. Символ «->» показывает файл, на который указывает символическая ссылка.
Удалить символические ссылки с rm
Команда rm удаляет указанные файлы и каталоги.
Чтобы удалить символическую ссылку, вызовите rm команду, за которой следует символическое имя ссылки в качестве аргумента:
В случае успеха команда завершается с нуля и не выводит никаких данных.
С rm его помощью вы можете удалить более одной символической ссылки одновременно. Для этого передайте имена символических ссылок в качестве аргументов через пробел:
Чтобы получить запрос перед удалением символической ссылки, используйте -i параметр:
Для подтверждения типа y и нажмите Enter .
Если символическая ссылка указывает на каталог, не добавляйте / завершающий слеш в конце. В противном случае вы получите ошибку:
Если имя аргумента заканчивается на / , rm команда предполагает, что файл является каталогом. Ошибка возникает потому, что при использовании без параметра -d или -r , rm невозможно удалить каталоги.
Чтобы быть в безопасности, никогда не -r вариант при удалении символических ссылок с rm . Например, если вы наберете:
Содержимое целевого каталога будет удалено.
Удалить символические ссылки с unlink
Чтобы удалить символическую ссылку, запустите unlink команду с именем символической ссылки в качестве аргумента:
Если команда выполняется успешно, она не отображает вывод.
Не добавляйте / косую черту в конце имени символической ссылки, потому что unlink не можете удалить каталоги.
Найти и удалить неработающие символические ссылки
Если вы удалите или переместите исходный файл в другое место, символический файл останется висящим (поврежденным).
Команда выведет список всех неработающих ссылок в каталоге и его подкаталогах.
Если вы хотите исключить символические ссылки, содержащиеся в подкаталогах, передайте -maxdepth 1 параметр find :
После того, как вы найдете нарушенные символические ссылки, вы можете вручную удалить их с rm или unlink или использовать -delete опцию в find команде:
Вывод
Чтобы удалить символическую ссылку, используйте команду rm или, unlink за которой следует имя символической ссылки в качестве аргумента. При удалении символической ссылки, указывающей на каталог, не добавляйте косую черту к имени символической ссылки.
Источник
Как удалить (удалить) символические ссылки в Linux
Символическая ссылка, также известная как символическая ссылка, представляет собой файл особого типа, который указывает на другой файл или каталог. Это что-то вроде ярлыка в Windows. Символическая ссылка может указывать на файл или каталог в той же или в другой файловой системе или разделе.
В этом руководстве мы покажем вам, как удалить (удалить) символические ссылки в системах Linux / UNIX с помощью команд rm , unlink и find .
Подготовка
Чтобы удалить символическую ссылку, вам необходимо иметь права на запись в каталог, который содержит символическую ссылку. В противном случае вы получите ошибку «Операция запрещена».
Когда вы удаляете символическую ссылку, файл, на который она указывает, не изменяется.
Используйте команду ls -l чтобы проверить, является ли данный файл символической ссылкой, и найти файл или каталог, на который указывает символическая ссылка.
Первый символ «l» указывает на то, что файл является символической ссылкой. Символ «->» показывает файл, на который указывает символическая ссылка.
Удалите символические ссылки с помощью rm
Команда rm удаляет указанные файлы и каталоги.
Чтобы удалить символическую ссылку, вызовите команду rm за которой следует имя символической ссылки в качестве аргумента:
В случае успеха команда завершается с нулем и не выводит никаких результатов.
С помощью rm вы можете удалить более одной символической ссылки одновременно. Для этого передайте имена символических ссылок в качестве аргументов, разделенных пробелом:
Чтобы получить запрос перед удалением символической ссылки, используйте параметр -i :
Для подтверждения введите y и нажмите Enter .
Если символическая ссылка на каталог, не добавляйте к / слэш в конце. В противном случае вы получите ошибку:
Если имя аргумента заканчивается на / , команда rm предполагает, что файл является каталогом. Ошибка возникает из-за того, что при использовании без опции -d или -r rm не может удалять каталоги.
На всякий случай никогда не используйте параметр -r при удалении символических ссылок с помощью rm . Например, если вы наберете:
Содержимое целевого каталога будет удалено.
Удалить символические ссылки с помощью unlink
Команда unlink удаляет указанный файл. В отличие от rm , unlink принимает только один аргумент.
Чтобы удалить символическую ссылку, запустите команду unlink за которой следует имя символической ссылки в качестве аргумента:
Если команда выполняется успешно, она не выводит никаких результатов.
Не добавляйте к / слэш в конце имени SYMLINK потому unlink не может удалить каталоги.
Найти и удалить битые символические ссылки
Если вы удалите или переместите исходный файл в другое место, символический файл останется висящим (сломанным).
Чтобы найти все неработающие символические ссылки в данном каталоге, выполните следующую команду:
Команда выведет список всех неработающих ссылок в каталоге и его подкаталогах.
Если вы хотите исключить символические ссылки, содержащиеся в подкаталогах, передайте параметр -maxdepth 1 чтобы find :
Как только вы найдете неработающие символические ссылки, вы можете вручную удалить их с помощью rm или unlink либо использовать параметр -delete команды find :
Выводы
Чтобы удалить символическую ссылку, используйте команду rm или unlink за которой следует имя символической ссылки в качестве аргумента. При удалении символической ссылки, указывающей на каталог, не добавляйте косую черту в конце имени символической ссылки.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
How To: Linux Delete Symbolic Link ( Softlink )
- rm command – Removes each given FILE including symbolic links in Linux.
- unlink command – Deletes a single specified file name including symbolic links in Linux.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | Linux terminal |
Est. reading time | 4 minutes |
Let us see some examples about to remove (delete) symbolic links in Linux.
Warning : Care must be taken with the following rm, unlink, and find command as those commands won’t prompt for removal confirmation. The author or nixCraft site is not responsible for any data loss. Please use all command with care and think twice before you press the [Enter] key. Always keep a verified backup of all files and data.
Linux Delete Symbolic Link File
Use the following syntax:
Examples
First, we are going to create a new symbolic link in Linux using the ln command. Use the cd command to /tmp/ directory:
Now we are going to delete the dns symbolic link using the rm command or unlink command as follows:
Getting confirmation prompt
We can force prompt before every removal of symbolic links by passing the -i to the rm:
rm -i
Delete Symbolic Link Directory
The syntax is same:
Please avoid appending / at the end of linkDirName . cd in to the /tmp/ using the cd command:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Now delete the test symbolic link directory using any one of the following command:
Make sure symbolic link is removed using the ls command:
Remove Symbolic Links with find command
Here is we can search and list all symbolic links using the find:
Say list all symlinks in /tmp/bin/, run:
find /tmp/bin/ -type l -print
Only list *.txt or *.sh symlinks, run:
Find all symbolic links with find and delete them
All you have to do is replace the -print action with the -delete as follows to delete all ‘*.sh’ symlinks:
find /tmp/bin/ -lname «*.sh» -delete
To get confirmation use the following syntax when you need to find all “*.txt” symlinks and delete them:
Finding and deleting broken symbolic links
Again, we use the find command:
Here is what I see from the last command:
To remove that broken symlink, run:
Where find command options are:
- -type l : Find only symbolic link
- -lname «*.txt» :File is a symbolic link whose contents match shell pattern such as “*.txt”. Pass the -ilname «pattern» to the find for the case insensitive match. This option only works the latest version of GNU/find.
- -print : Print matched file lists.
- -delete : Remove/delete matched symlinks.
- -exec rm -i <> + : Remove/delete matched symlinks using the rm command with confirmation
- -xtype l : Deal with a symbolic link (find only symlinks).
- -ls : List symbolic links if found.
Linux Remove Symbolic Link Command Options
Type the following command:
rm —help
unlink —help
Conclusion
You learned the rm and unlink command to delete or remove a symbolic link under Linux operating systems. See the rm/unlink command man page by typing the following man command or read it online here:
man rm
man find
man unlink
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Поиск и удаление битых символьных ссылок в Linux
Обновл. 14 Сен 2021 |
На этом уроке мы рассмотрим, как найти битые (т.е. неработающие) символьные ссылки, проанализировать их и удалить из Linux-системы, если это необходимо.
Символьные ссылки
Символьные ссылки (или «мягкие ссылки», «симлинки») представляют собой некое подобие ярлыков, которые могут указывать на файлы и каталоги. В окне файлового менеджера (или в консоле терминала) символьная ссылка выглядит так же, как и обычный файл или каталог. Файл или каталог, на который указывает символьная ссылка, может находиться в любом месте файловой системы.
Предположим, например, что в вашем домашнем каталоге под названием user есть символьная ссылка, указывающая на файл под названием text-file.txt, который находится где-то в другом месте файловой системы. Команды, которые вы применяете к символьной ссылке, автоматически применяются и к файлу, на который она ссылается, т.е. если вы попытаетесь использовать команду cat или less вместе с символьной ссылкой, то увидите содержимое файла text-file.txt.
Linux содержит большое количество символьных ссылок. Установщики приложений часто используют символьные ссылки для создания связей с исполняемыми файлами. При обновлении программного обеспечения, бинарный файл заменяется новой версией, и все символьные ссылки продолжают работать как и раньше до тех пор, пока имя нового файла совпадает со старым.
Мы можем легко увидеть некоторые символьные ссылки, применив к корневому каталогу команду ls . На тестовой машине с Debian 11 они выделены бледно-зеленым цветом:
Мы можем рассмотреть их подробнее, добавив опцию -l (long listing):
В начале каждой строки стоит буква l (link), которая обозначает, что данный объект является символьной ссылкой. Часть после -> показывает объект, на который указывает ссылка. В нашем примере целевыми объектами являются каталоги.
В символьных ссылках не используются права доступа к файлу (иными словами, они всегда имеют форму rwxrwxrwx ). В реальности, права доступа к символьным ссылкам определяются правами доступа к тому файлу, на который указывает символьная ссылка.
Создание символьных ссылок
Прежде, чем создавать символьную ссылку, предлагаю написать небольшую программку, которую мы свяжем с нашей ссылкой.
Для этого открываем терминал (например, с помощью сочетания клавиш Ctrl+Alt+T) и создаем новый файл ravesli.cpp:
Затем открываем этот файл любым текстовым редактором, например, nano:
Добавляем следующий код:
Нажимаем Ctrl+O для сохранения изменений и Ctrl+X для выхода из редактора.
Скомпилируем нашу программу при помощи компилятора g++:
g++ ravesli.cpp -o ravesli
Теперь переместим скомпилированный файл нашей программы к другим бинарным файлам в каталог /bin:
sudo mv ravesli /bin
Осталось создать символьную ссылку и связать её с /bin/ravesli. Для этого вводим команду ln (link) вместе с параметром -s (symbolic) и целевым объектом ( /bin/ravesli) с названием ссылки ( hello ):
ln –s /bin/ravesli hello
Мы только что связали бинарный файл с символьной ссылкой.
Битые символьные ссылки
Символьная ссылка становится битой (или «висячей»), если связанный с ней файл удаляется или перемещается в другое место. Если кто-то вручную удалит файл, не зная, что на него указывают символьные ссылки, то эти символьные ссылки больше не будут работать. Они будут похожи на дорожные знаки, указывающие на город, который снесли бульдозерами.
Для наглядной демонстрации такого поведения я специально создал символьную ссылку hello в каталоге
Видно, что ссылка указывает на программу под названием ravesli в каталоге /bin. Если мы запустим символьную ссылку, то запустится связанная с ней программа:
Далее обратимся к программе напрямую:
Как и ожидалось, мы получили тот же результат. А теперь давайте удалим файл программы:
sudo rm /bin/ravesli
Цвет символьной ссылки изменился. Она выделена красным, потому что Linux знает, что ссылка — битая. При этом система продолжает отображать объект, на который указывала ссылка, чтобы мы могли заменить файл, перекомпилировать программу или сделать другие, необходимые для восстановления символьной ссылки действия.
Обратите внимание, что если мы снова попытаемся запустить символьную ссылку, то получим ошибку ссылки, а не объекта, на который указывает ссылка:
Поиск битых символьных ссылок (команда find)
В большинстве современных версий команды find есть опция -xtype , которая упрощает поиск битых символьных ссылок. Использование команды find с опцией -xtype и флагом l (link) позволит искать и возвращать битые ссылки:
Стоит отметить, что по умолчанию поиск является рекурсивным, поэтому он автоматически выполняется для всех подкаталогов.
Если мы соединим вышеприведенную команду с командой wc -l (lines), то сможем подсчитать строки, что аналогично подсчету битых символьных ссылок:
find . -xtype l | wc -l
Как вы можете видеть, у нас есть 1 битая символьная ссылка.
Анализ битых символьных ссылок
Прежде чем удалять все битые символьные ссылки, внимательно изучите результаты команды find . Подумайте, есть ли веская причина для какой-либо из найденных символьных ссылок быть битой.
Иногда проблема может заключаться в символьной ссылке, а не в целевом файле: если символьная ссылка была создана неправильно, то она может ни на что не указывать, но при этом целевой файл существует. В таком случае пересоздание символьной ссылки станет решением проблемы.
Также возможно, что явно битая символьная ссылка используется в качестве чего-то другого, например, индикатора блокировки. Или что цель присутствует только периодически, и это ожидаемое (и желаемое) поведение конкретного программного обеспечения. Возможно, целевой файл копируется с другой машины или облака, выполняет свою функцию, а затем снова удаляется, только для того, чтобы быть замененным другой программой в следующем цикле.
Битая символьная ссылка может быть признаком неудачной установки программного обеспечения. В этом случае вместо удаления символьной ссылки вам следует либо исправить её вручную, либо повторить установку. Когда вы исправите необходимые битые ссылки, то повторите команду поиска битых ссылок. Если всё сделано правильно, исправленные символьные ссылки не должны будут больше отображаться в результатах поиска.
В целях безопасности лучше проводить удаление символьных ссылок в рамках ваших собственных каталогов. Будьте крайне осторожны при выполнении этих команд от имени root или в системных каталогах.
Удаление битых символьных ссылок
Опция -exec (execute) запускает некоторую команду, которая будет выполняться на результатах поиска, полученных от команды find . Мы собираемся использовать команду rm для удаления каждой поврежденной символьной ссылки. Часть <> заменяется именем битой символьной ссылки по мере обнаружения каждой из них с помощью команды find .
Мы должны использовать точку с запятой ( ; ), чтобы завершить список команд, которые мы хотим запустить при помощи -exec . Обратная косая черта ( \ ) используется для экранирования точки с запятой, благодаря чему она будет рассматривается как часть команды find :
find . -xtype l -exec rm <> \;
Как вы можете видеть, команда была выполнена без каких-либо признаков того, что что-то произошло. Чтобы убедиться, что битые ссылки удалены, мы повторяем команду для их поиска:
Нет никаких совпадающих результатов, что означает, что битые символьные ссылки были удалены.
Утилита symlinks
symlinks — это мощная утилита для управления и исправления битых символьных ссылок. Поскольку symlinks не входит в стандартную поставку большинства дистрибутивов Linux, то вам придется установить данный инструмент вручную.
Команда установки данной утилиты (в Debian 11) будет выглядеть следующим образом:
sudo aptitude install symlinks
Примечание: Если вы используете Ubuntu, то перед установкой symlinks вам нужно будет добавить репозиторий universe в список репозиториев вашей системы:
sudo add-apt-repository universe
После успешной установки symlinks вам необходимо проверить наличие битых ссылок в вашей системе. Для этого введите следующее:
Если в вашей системе присутствует битая (dangling) ссылка, вы получите вывод, который выглядит как на вышеприведенном скриншоте.
Символ . (точка) обозначает текущий рабочий каталог. Если вы хотите получить информацию о битых символьных ссылках, например, в каталоге /home, то можете сделать это, введя следующую команду:
Если в вашей системе присутствует битая ссылка, вы получите примерно следующий результат:
dangling: /home/diego/Документы/hello -> /bin/ravesli
Чтобы быстро удалить полученную ранее битую символьную ссылку, вы можете использовать флаг -d (delete):
Чтобы удалить битые символьные ссылки в каталоге /home, введите:
symlinks -d /home
На этот раз вывод будет не только перечислять найденные битые ссылки, но также сообщать, что ссылка теперь удалена, например:
dangling: /home/diego/Документы/hello -> /bin/ravesli
deleted: /home/diego/Документы/hello -> /bin/ravesli
Чтобы произвести рекурсивный поиск и удаление битых символьных ссылок в заданном каталоге, используйте флаги -dr (d = delete, r = recursive):
Заключение
Символьные ссылки важны для Linux, поскольку они облегчают процесс определения путей и управления ими на вашем компьютере. Но если об этом не позаботиться, то битые символьные ссылки могут занять огромный кусок вашего системного хранилища, и вы даже не узнаете об этом. В таких ситуациях в игру вступают такие утилиты, как symlinks и команда find . Также старайтесь всегда уделять время просмотру списка символьных ссылок, прежде чем запускать команду для их удаления.
Поделиться в социальных сетях:
Источник