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").