Компания IBM
Опубликован: 22.06.2005 | Доступ: свободный | Студентов: 26771 / 4664 | Оценка: 4.27 / 3.93 | Длительность: 26:36:00
ISBN: 978-5-9556-0029-1
Лекция 4:

Работа с файловой системой

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Удаление файлов и каталогов

В Linux для удаления файлов предназначена утилита rm (сокращение от англ. "remove" - "удалять"):

[methody@localhost methody]$ rm examples/text 
[methody@localhost methody]$ ls -l text-hardlink
-rw-r--r-- 1 methody methody 653 Сен 30 10:04 text-hardlink
[methody@localhost methody]$ rm text-hardlink
[methody@localhost methody]$ ls -l text-hardlink
ls: text-hardlink: No such file or directory
Пример 4.16. Удаление файла

Разобравшись в ссылках, Мефодий решил удалить файл text в каталоге examples. После этого файл text-hardlink в домашнем каталоге Мефодия, который является жесткой ссылкой на удаленный файл text, продолжает благополучно существовать. Единственное отличие, которое заметил Мефодий - количество жестких ссылок на этот файл теперь уменьшилось с "2" до "1" - действительно, text-hardlink - теперь единственное имя этого файла. Получается, что Мефодий удалил только одно из имен этого файла (жесткую ссылку) - сам же файл остался нетронутым.

Однако если Мефодий удалит и жесткую ссылку text-hardlink, у этого файла больше не останется ни одного имени, он станет недоступным пользователю файловой системы и будет уничтожен.

Утилита rm предназначена именно для удаления жестких ссылок, а не самих файлов. В Linux, чтобы полностью удалить файл, требуется последовательно удалить все жесткие ссылки на него. При этом все жесткие ссылки на файл (его имена) равноправны - среди них нет "главной", с исчезновением которой исчезнет файл. Пока есть хоть одна ссылка, файл продолжает существовать. Впрочем, у большинства файлов в Linux есть только одно имя (одна жесткая ссылка на файл), поэтому команда rm имя файла в большинстве случаев успешно удаляет файл.

Как уже говорилось, символьные ссылки - это отдельные файлы, поэтому после того, как Мефодий удалил файл text, text-symlink, который ссылался на этот файл, продолжает существовать, однако теперь это - "битая ссылка", поэтому его также можно удалить командой rm.

Мефодий решил создать каталог для разных упражнений - test, а потом решил обойтись одним каталогом examples. Однако команда rm не сработала, заявив, что test - это каталог:

[methody@localhost methody]$ mkdir test
[methody@localhost methody]$ rm test 
rm: невозможно удалить `test': Is a directory
[methody@localhost methody]$ rmdir test
[methody@localhost methody]$
Пример 4.17. Удаление каталога

Для удаления каталогов предназначена другая утилита - rmdir (от англ. "remove directory"). Впрочем, rmdir согласится удалить каталог только в том случае, если он пуст: в нем нет никаких файлов и подкаталогов. Удалить каталог вместе со всем его содержимым можно командой rm с ключом "-r" (recursive). Команда rm -r каталог - очень удобный способ потерять в одночасье все файлы: она рекурсивно8"Рекурсивно" по отношению к каталогам обозначает, что действие будет произведено над самим каталогом, его подкаталогами, подкаталогами его подкаталогов и т. д. обходит весь каталог, удаляя все, что попадется: файлы, подкаталоги, символьные ссылки... а ключ "-f" (force) делает ее работу еще неотвратимее, так как подавляет запросы вида "удалить защищенный от записи файл", так что rm работает безмолвно и безостановочно.

Помните: если вы удалили файл, значит, он уже не нужен, и не подлежит восстановлению!

В Linux не предусмотрено процедуры восстановления удаленных файлов и каталогов. Поэтому стоит быть очень внимательным, отдавая команду rm и, тем более, rm -r: нет никакой гарантии, что случайно удаленные данные удастся восстановить. Узнав об этом, Мефодий не огорчился, но подумал, что впредь будет удалять только действительно ненужные файлы, а все сомнительное - перемещать с помощью mv в подкаталог ~/tmp, где оно не будет мешать, и где можно периодически наводить порядок.

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Helgisbox Helgisbox
Helgisbox Helgisbox

Лекция 9, там где говорится "[methody@localhost methody]$ cat | hexdump -C Теперь Ctrl+V, Ctrl+C, enter и Ctrl+D^C"

вывод должен быть таким:

cat | hexdump -C
^C
00000000  03 0a                                             |..|
00000002

Даже в тексте говорится про то, что оборажаются именно коды 03 0a, а скопирован кусок текста описания.

Александр Савин
Александр Савин

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

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Максим Виноградов
Максим Виноградов
Россия, Москва