Удаление файлов
Для удаления файлов используется команда rm со следующим синтаксисом:
rm [ -firR] файл...
При этом происходит удаление записи файла из соответствующего каталога и уменьшение на 1 количества связей в индексном дескрипторе. Если количество связей в результате становится равным 0, файл уничтожается (после его закрытия всеми открывшими процессами) - соответствующий индексный дескриптор становится свободным, и блоки данных файла также освобождаются.
Для удаления файла пользователь должен обладать правом записи в соответствующий каталог. Если нет права на запись в файл и входной поток связан с терминалом, на терминал выдаются (в восьмеричном виде) права доступа к файлу и запрашивается подтверждение; если введен ответ y - файл удаляется, иначе - нет.
Команда rm воспринимает следующие основные опции:
-f
Удаляет без запросов подтверждения все файлы, независимо от прав доступа к ним, если имеется право записи для каталога.
-i
Запрашивает подтверждения, прежде чем удалить файл. Опция -i отменяет действие опции -f; она действует даже тогда, когда стандартный входной поток не связан с терминалом.
-r
Рекурсивное удаление, с подкаталогами, в том числе, не пустыми.
-R
То же, что и опция -r.
Команда rm без опций рекурсивного удаления не удаляет каталоги. Для удаления пустых каталогов предназначена команда rmdir. Если в каталоге есть другие файлы, кроме ссылок на текущий и родительский каталог, команда rmdir его не удаляет. Эта команда имеет следующий синтаксис:
rmdir [-p][-s] каталог...
Команда rmdir воспринимает следующие опции:
-p
Позволяет удалить каталог и его родительские каталоги, если они - пустые. В стандартный выходной поток выдается сообщение об удалении всех указанных каталогов или о сохранении части из них по каким-либо причинам.
-s
Подавляет выдачу сообщений при использовании опции -p.
Рассмотрим ряд примеров удаления файлов и каталогов (продолжая предыдущие примеры):
[kravchuk@arturo 17:23:09 /tmp]$ ls f* d* dogovor_trg.sql f1.txt f3.txt dtdbcache_:0 f2.txt f5.txt
d1: f1.txt f2.txt f3.txt
d2: f1.txt f2.txt f3.txt [kravchuk@arturo 17:23:17 /tmp]$ rm -r d1 [kravchuk@arturo 17:23:28 /tmp]$ rm f1.txt f2.txt [kravchuk@arturo 17:23:47 /tmp]$ ls -l f* lrwxrwxrwx 1 kravchuk 50 6 Мар 26 16:54 f3.txt -> f1.txt -rw-r--r-- 1 kravchuk 50 639 Мар 26 16:55 f5.txt [kravchuk@arturo 17:23:51 /tmp]$ mkdir d2/d3 [kravchuk@arturo 17:24:12 /tmp]$ rm d2/* rm: d2/d3 is a directory [kravchuk@arturo 17:24:19 /tmp]$ ls -l d2 total 8 drwxr-xr-x 2 kravchuk 50 69 Мар 26 17:24 d3 [kravchuk@arturo 17:24:26 /tmp]$ rmdir -p d2/d3 [kravchuk@arturo 17:25:24 /tmp]$ ls -l d2 d2: No such file or directory