Как вы удаляете файлы в терминале Linux? Вы используете команду rm. Именно так обычно поступают люди. Но для удаления файлов и ссылок в Linux можно использовать и другую команду. Эта команда называется unlink, и хотя может показаться, что она предназначена только для удаления ссылок в Linux, она также может удалять файлы.
В конце концов, процесс удаления в Linux - это, по сути, удаление ссылок. Когда вы удаляете файл, ядро Linux обнаруживает, что он соответствует иноду номер X. Оно удалит запись о файле из списка каталога и уменьшит количество ссылок на инод X на 1. Теперь, когда количество ссылок на инод X равно 0, ядро знает, что на этот инод никто не ссылается, поэтому можно удалить этот инод и удалить связанный с ним блок данных.
Команда Unlink
Команда unlink используется для удаления файлов и ссылок. Вы можете использовать ее для удаления как мягких, так и жестких ссылок.
Это одна из самых простых команд, у которой нет опций, кроме --help и --version.
Чтобы удалить файл с помощью unlink, выполните следующие действия:
1 | unlink имя_файла |
Для удаления ссылки:
1 | unlink имя_ссылки |
При успешном удалении файла или ссылки вы не увидите никакого вывода. Использование команды unlink для удаления файла в Linux
В принципе, это все, что касается команды unlink. Она не может делать ничего другого.
Вы не можете удалить несколько файлов или ссылок одновременно
В то время как команда rm может удалить несколько файлов одновременно, команда unlink может удалить только один файл за один раз. Вы не можете передать ей сразу несколько файлов. Вы также не можете использовать шаблоны globbing.
Если вы попытаетесь сделать что-то подобное, команда выдаст ошибку и не удалит ни одного файла.
1 2 3 | unlink *.txt unlink: extra operand ‘file2.txt’ Try 'unlink --help' for more information. |
То же самое относится и к удалению нескольких ссылок одновременно.
Вы не можете удалять каталоги с помощью команды unlink
GNU-реализация команды unlink не может удалить каталог. Она выдает ошибку, если вы пытаетесь удалить папку.
1 2 | unlink new_dir unlink: cannot unlink 'new_dir': Is a directory |
Разница между командами rm и unlink
- Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
- Между этими двумя командами есть несколько очевидных различий, которые вы уже видите.
- Команда unlink обрабатывает только один файл или ссылку за один раз. Команда rm может обрабатывать несколько одновременно.
- Команда rm может удалять каталоги с опцией рекурсии. Команда unlink не может удалить каталог.
- Команда rm выполняет проверку безопасности. Если у вас нет разрешения на запись в файл, она попросит вас подтвердить это интерактивно или использовать опцию force -f. При использовании команды unlink проверка безопасности отсутствует. Она удалит файл, защищенный от записи.
- У nlink нет дополнительных функций или опций, в отличие от команды rm.
Может быть несколько случаев, когда лучше использовать команду unlink, а не rm. Представьте, что вы хотите "принудительно удалить" файл независимо от защиты от записи, но хотите, чтобы сценарий не сработал, если файл не существует. Команда rm -f не выдаст никаких ошибок, если файл не существует, а команда unlink выдаст ошибку.