Чем отличается команда rm от unlink? — 31 марта 2026 г. в 11:08:13.598
Чем отличается команда rm от unlink? Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает. Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок. У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис. # unlink /tmp/hardlink # unlink /tmp/file Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран. Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы. Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог. Запустим команду и пытаемся насильно удалить файл которого нет в каталоге: rm -f test.txt И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так: unlink test.txt получим ошибку: unlink: cannot unlink 'test.txt': No such file or directory То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл. С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет. Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root: chattr +i test.txt chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение). Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-». 👉 @i_odmin_book

