Удалить файл arch linux

ОПИСАНИЕ

unlink() удаляет имя из файловой системы. Если это имя было последней ссылкой на файл и больше нет процессов, которые держат этот файл открытым, данный файл удаляется и место, которое он занимает, освобождается для дальнейшего использования.

Если имя было последней ссылкой на файл, но какие-либо процессы всё ещё держат этот файл открытым, файл будет оставлен, пока последний файловый дескриптор, указывающий на него, не будет закрыт.

Если имя указывает на символьную ссылку, то будет удалена ссылка.

Если имя указывает на сокет, FIFO или устройство, то имя будет удалено, но процессы, которые открыли любой из этих объектов могут продолжать его использовать.

unlinkat()

Системный вызов unlinkat() работает также как unlink() или rmdir(2) (в зависимости от того, есть ли флаг AT_REMOVEDIR во flags), за исключением случаев, описанных здесь.

Если в pathname задан относительный путь, то он считается относительно каталога, на который ссылается файловый дескриптор dirfd (а не относительно текущего рабочего каталога вызывающего процесса, как это делается в unlink() и rmdir(2)).

Если в pathname задан относительный путь и dirfd равно специальному значению AT_FDCWD, то pathname рассматривается относительно текущего рабочего каталога вызывающего процесса (как unlink() и rmdir(2)).

Если в pathname задан абсолютный путь, то dirfd игнорируется.

Аргумент flags представляет собой битовую маску, значение которой может быть 0, или объединённым значением флагов с помощью OR, определяющих операцию unlinkat(). В настоящее время определён только один флаг:

AT_REMOVEDIR По умолчанию, unlinkat() выполняет действие, эквивалентное unlink() с параметром pathname. Если указан флаг AT_REMOVEDIR, то выполняется действие, эквивалентное rmdir(2) с параметром pathname.

Смотрите в openat(2) объяснение необходимости unlinkat().

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.

Читайте также:  Linux bridge linux bond

ОШИБКИ

EACCES Для эффективного UID процесса нет прав на запись в каталог, содержащийся в pathname, или в одном из каталогов в pathname не разрешён поиск (смотрите также path_resolution(7)). EBUSY Файл pathname не может быть удалён, так как он ещё используется системой или другим процессом; например, это точка монтирования или его создал клиент NFS для представления активной, но пока безымянной inode («NFS silly renamed»). EFAULT Аргумент pathname указывает за пределы доступного адресного пространства. EIO Произошла ошибка ввода-вывода. EISDIR pathname refers to a directory. (This is the non-POSIX value returned since Linux 2.1.132.) ELOOP Во время определения pathname встретилось слишком много символьных ссылок. ENAMETOOLONG pathname слишком длинен. ENOENT Компонент pathname не существует, является повисшей ссылкой или pathname пуст. ENOMEM Недостаточное количество памяти ядра. ENOTDIR Компонент пути, использованный как каталог в pathname, в действительности таковым не является. EPERM Система не разрешает удаление каталогов или для удаления каталогов требуются права, которыми не обладает вызвавший процесс. (Этот код ошибки предусмотрен в POSIX; как описано выше, в Linux в этом случае возвращается EISDIR.) EPERM (только в Linux) Файловая система не позволяет удаление файлов. EPERM или EACCES На каталоге, содержащемся в pathname, установлен закрепляющий бит (S_ISVTX) и эффективный UID процесса не совпадает ни с UID удаляемого файла, ни с каталогом, в котором он содержится, и у процесса нет прав (Linux: нет мандата CAP_FOWNER). EPERM Файл для удаления помечен как неизменяемый (immutable) или только для добавления (смотрите ioctl_iflags(2)). EROFS pathname указывает на файл в файловой системе, доступной только для чтения.

В unlinkat() могут возникнуть те же ошибки, что и в unlink() и rmdir(2). Также, в unlinkat() могут возникнуть следующие ошибки:

EBADF В pathname содержится относительный путь, но значение dirfd не равно AT_FDCWD и не является правильным файловым дескриптором. EINVAL В flags указано неверное значение флага. EISDIR Значение pathname ссылается на каталог и в flags не указан AT_REMOVEDIR. ENOTDIR Значение pathname содержит относительный путь и dirfd содержит файловый дескриптор, указывающий на файл, а не на каталог.

Читайте также:  Copying file in linux terminal

СТАНДАРТЫ

HISTORY

glibc

В старых ядрах, где unlinkat() отсутствует, обёрточная функция glibc использует unlink(2) или rmdir(2). Если pathname является относительным путём, то glibc собирает путь относительно символической ссылки в /proc/self/fd, которая соответствует аргументу dirfd.

ДЕФЕКТЫ

Неточности в протоколе NFS могут приводить к неожиданному исчезновению файлов, которые всё ещё используются.

СМ. ТАКЖЕ

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitriy Ovchinnikov , Dmitry Bolkhovskikh , Katrin Kutepova , Yuri Kozlov и Иван Павлов

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

Powered by archmanweb, using mandoc for the conversion of manual pages.

The website is available under the terms of the GPL-3.0 license, except for the contents of the manual pages, which have their own license specified in the corresponding Arch Linux package.

Источник

Удаление файлов в Linux. Как удалять файл через терминал Linux?

Удаление файлов в Linux — задача, которая не вызывает затруднений у опытных пользователей. Наша же статься ориентирована, скорее, на начинающих. В ней вы сможете посмотреть, как удалить файлы через терминал, и какие команды лучше всего при этом использовать.

Почему лучше удалять файлы из консоли? Дело в том, что это даёт ряд преимуществ и бо́льшую гибкость. К примеру, используя специальную команду, вы легко и полностью удалите файл с жёсткого диска без возможности восстановления. Или всего одной командой и с помощью определённых символов, условий либо регулярных выражений удалите сотни не нужных вам файлов в каталоге либо подкаталогах, отвечающих некоторому критерию.

Удаляем файлы в Linux: практика

В ОС Linux для удаления файлов есть стандартная утилита rm . Как это принято со стандартными утилитами, в названии rm есть определённая идея. В нашем случае речь идёт о сокращении от английского слова Remove — удалять.

Читайте также:  No such device or address linux

Итак, чтобы выполнить удаления одного файла, используем команду rm , указывая за ней имя нашего файла:

Если наш файл находится не в текущем рабочем каталоге, нужно указать путь к его местоположению:

Бывает, что файл защищён от записи. Тогда нам предложат подтвердить команду. Чтобы удалить файл в такой ситуации, просто вводим y и нажимаем Enter.

 
rm: remove write-protected regular empty file 'filename'?

Если мы хотим удалить сразу несколько файлов в Linux, то это тоже не проблема: используем команду rm , за которой прописываем имена наших файлов через пробел:

 
rm filename1 filename2 filename3

Ещё вариант — использование подстановочного знака * и регулярных выражений для соответствия определённым файлам. К примеру, мы легко удалим все файлы в Linux, имеющие расширение .txt следующей командой:

Для подтверждения каждого файла перед удалением используйте опцию -i :

Но когда файлов много, а вы твёрдо уверены в правильности своей команды и не хотите каждый раз отвечать на вопрос системы, используйте противоположную опцию -f . Будут удалены все файлы безоговорочно, т. е. без лишних вопросов:

Удаляем папки и каталоги в Linux

Если хотите удалить пустой каталог, задействуйте опцию -d .

Если хотим удалить непустой каталог и все файлы, которые в нём находятся, поступаем следующим образом:

Опять же, в случае наличия защиты от записи, система Linux спросит пользователя, стоит ли выполнять удаление. Если мы хотим удалить файлы и непустые каталоги без лишних вопросов, делаем так:

Когда хотим удалить сразу несколько каталогов, мы применяем команду rm, прописывая за ней имена каталогов через пробел:

 
rm -r dirname1 dirname2 dirname3

Кстати, здесь мы тоже можем использовать подстановочный знак ( *) и регулярные выражения, обеспечивающие соответствие нескольким каталогам.

Выводы

Как видите, удалить файл в Linux через терминал совсем несложно, поэтому с этой операцией справится каждый. При этом вы должны не только понимать, как правильно использовать команду rm в Linux, но и знать, как делать это безопасно.

Источник

Оцените статью
Adblock
detector