**103.3** Основные операции с файлами Студент должен уметь управлять файлами и каталогами при помощи основных команд Linux **Изучаем** : - копирование, перенос и удаление файлов и каталогов; - копирование нескольких файлов и каталогов, в том числе рекурсивно; - удаление файлов и каталогов, в том числе рекурсивно; - групповые символы (wildcard); - отбор файлов по типу, размеру, датам и т.д.; - работу с tar, cpio и dd. **Термины и утилиты: ** - cp - find - mkdir - mv - ls - rm - rmdir - touch - tar - cpio - dd - file - gzip - gunzip - bzip2 - xz - групповые символы Частой задачей администратора в Linux является работа с файлами и каталогами: создание, копирование, перемещение и удаление. Использование групповых символов вместе с инструментами консоли позволяют осуществлять эти действия с максимальной эффективностью. Для создания директорий используется команда **mkdir**** имя\_каталога **, для удаления пустого каталога -** rmdir ****имя\_каталога**. Просмотр содержимого текущей директории – **ls**. Например: **ls** **–**** l**_ (просмотреть содержимое текущего каталога);_ **ls**** fol ****\*** _ (посмотреть содержимого каталогов, имена которых начинаются с " __fol__");_ Для копирования используется команда **cp** **что\_копировать куда\_копировать** , например: **cp** **–**** R ****Folder**** NewFolder**_ (скопировать директорию " __Folder__" со всем содержимым в текущий каталог с именем новой директории " __NewFolder__");_ Для переноса используется команда **mv** **что\_переносить куда\_переносить** , например: **mv**** file ****.**** txt ****folder**** 1/** _(перенести " __file__. __txt__" в каталог " __folder__ 1" в текущей директории);_ Для удаления используется команда **rm**** что\_удалить**, например: **rm** **–**** rf ****folder**** 1 ** _(удалить каталог_ _folder__1 вместе с содержимым);_ Для создания пустого файла, или обновления метки доступа существующего, используется команда **touch** **имя\_файла,** а для получения информации о файле – команда **file**** имя\_файла**. Групповые символы, использующиеся при работе с текстовыми данными: - _\* – любое количество любых символов;_ - **? ** _ – любой символ;_ - **! ** _– не (любой символ кроме указанных);_ - **[****ac****] ** _– __a_ _или_ _c__ ;_ - **[****a ****-**** c****]** _ –_ _a __,_ _b__ ,_ _c__._ Например: **ls** **\* ** _(вывести содержимое всех каталогов);_ **ls** **?**** at ****.**** txt **** ** _(вывести содержимое файла с именем: любая первая буква, остальная часть имени " __at__. __txt__");_ **ls** **\***** at ****.**** txt **** ** _(вывести содержимое файла с именем, оканчивающимся на " __at__. __txt__");_ **ls** **![****ab****]\* ** _(вывести содержимое файла или каталога с именем, начинающимся с любых символов, кроме " __a__" и " __b__");_ Для поиска информации используется команда **find** , например: **find** **. –**** name ****"\ *****A**** \*" ** _(искать в текущей директории объекты, имеющие в имени символ " __A__");_ **find** **/**** etc **** – ****size** ** -5**** M **** ** _(искать в директории "/ __etc__" объекты размером менее 5 Мб);_ **find** ** . –**** type ****l** _(искать в текущей директории ссылки);_ В среде Linux существует несколько распространённых архиваторов, использующихся для распаковки и упаковки объектов в единый файл: - **с**** pio** - двоичный архиватор, копирующий информацию в архив и обратно; - **dd** - копирование по блокам; - **gzip** и **gunzip** - утилита сжатия и восстановления файлов (контейнер одного файла); - bzip2 и bunzip2 - утилита сжатия и восстановления файлов (контейнер одного файла); - xz и unxz - утилита сжатия и восстановления файлов (контейнер одного файла); - tar - архиватор (работает с набором файлов и каталогов). Например: **find** **. –**** name ****"\*. ****txt****" | **** cpio **** – ****o** **> ../**** test ****.**** cpio** _(найти в текущей папке все файлы с расширением ". __txt__" и упаковать их в архив_ _test __.__ cpio__, расположив его на уровень выше текущей_ _директории);_ **cpio** **-**** id **** < **** test ****.**** cpio**_ (распаковать в текущий каталог архив " __test__. __cpio__", создавая при необходимости структуру директорий);_ **dd**** if ****=/**** dev ****/**** sdb ****of**** = ****drive****. ****img**** ** _(скопировать носитель / __dev__ / __sdb_ _в образ_ _drive__. __img__ , располагающийся в текущей директории);_ **gzip**** drive ****.**** img **** ** _(сжать образ " __drive__. __img__" до " __drive__. __img__. __gz__", удалив исходный файл);_ **bunzip**** 2 **** drive ****.**** img ****.**** bz ****2 ** _(распаковать архив " __drive__. __img__. __bz__ 2" в текущий каталог);_ **unxz**** drive ****.**** img ****.**** xz **** ** _(распаковать архив " __drive__. __img__. __xz__" в текущий каталог);_ **tar**** cvf ****arch****. ****tar** ** **** folder** _(упаковать каталог " __folder__" в архив " __arch__. __tar__")._ **tar** **–**** xvf ****archive****. ****tar**** ** _(распаковать архив " __archive__. __tar__")._