Files
lpic_1-101/103_3.md
T
Kirill Semaev 321aabe33b build flow
2018-04-15 14:43:14 +03:00

107 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**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__")._