mirror of
https://github.com/Yaslonane/lpic_1-101.git
synced 2026-05-19 17:48:32 +03:00
103 added md
This commit is contained in:
@@ -0,0 +1,99 @@
|
|||||||
|
**103.2** Управление текстовым потоком
|
||||||
|
|
||||||
|
Студент должен уметь управлять фильтровать текстовый поток
|
||||||
|
|
||||||
|
**Изучаем** :
|
||||||
|
|
||||||
|
- применение текстовых фильтров с использованием встроенных команд UNIX
|
||||||
|
|
||||||
|
**Термины и утилиты: **
|
||||||
|
|
||||||
|
- cat
|
||||||
|
- cut
|
||||||
|
- expand
|
||||||
|
- fmt
|
||||||
|
- head
|
||||||
|
- join
|
||||||
|
- less
|
||||||
|
- nl
|
||||||
|
- od
|
||||||
|
- paste
|
||||||
|
- pr
|
||||||
|
- sed
|
||||||
|
- sort
|
||||||
|
- split
|
||||||
|
- tail
|
||||||
|
- tr
|
||||||
|
- unexpand
|
||||||
|
- uniq
|
||||||
|
- wc
|
||||||
|
|
||||||
|
Множество файлов в Linux неудобны для восприятия без предварительного форматирования, кроме того процесс обработки текстовой информации часто требует ее форматирования, обрезания, сортировки и т.д. Linux предлагает широкий набор инструментов редактирования текстового вывода, при этом следует заметить что указанные инструменты не затрагивают исходный файл (или текстовый поток), а форматируют его, выдавая полученный результат в консоль или другой файл.
|
||||||
|
|
||||||
|
Простой вывод текста (без корректировки содержимого):
|
||||||
|
|
||||||
|
Для вывода содержимого файла или объединения нескольких файлов на выводе используется команда **cat** , например:
|
||||||
|
|
||||||
|
**с**** at **** 1. ****txt** **2.**** txt **** > 3. ****txt**** ** _(передать содержимое двух файлов в третий);_
|
||||||
|
|
||||||
|
Команда **join** объединяет строки нескольких файлов по общему полю и отправляет их на стандартный вывод.
|
||||||
|
|
||||||
|
Команда **less** загружает файл постепенно и также отправляет его на вывод (удобно для больших файлов).
|
||||||
|
|
||||||
|
Команда **nl** нумерует строки.
|
||||||
|
|
||||||
|
Команда **pr** показывает, как содержимое файла будет выглядеть при выводе его на печать.
|
||||||
|
|
||||||
|
Команда **paste** вставляет строки из одного файла в другой и отправляет результат на стандартный вывод.
|
||||||
|
|
||||||
|
Команда **head** показывает первые строки файла, а **tail** – последние.
|
||||||
|
|
||||||
|
Например:
|
||||||
|
|
||||||
|
**head** **–**** n **** 2 / ****var**** / ****log**** / ****syslog**** ** _(вывести первые две строчки файла);_
|
||||||
|
|
||||||
|
**tail** **–**** f **** / ****var**** / ****log**** / ****syslog**** ** _(показывать последние строки файла, отображая содержимое в реальный момент времени);_
|
||||||
|
|
||||||
|
Команда **sort** может отсортировать содержимое файла по какому-нибудь признаку, например:
|
||||||
|
|
||||||
|
**sort** **1.**** txt **** ** _(отсортировать строки по алфавиту);_
|
||||||
|
|
||||||
|
Команда **wc** позволяет посчитать количество символов и т.д. в текстовом потоке, например:
|
||||||
|
|
||||||
|
**wc** **1.**** txt** _(посчитать количество строк, символов, слов);_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Вывод форматированного текста (с корректировкой содержимого):
|
||||||
|
|
||||||
|
Команда **cut** используется для обрезания содержимого файлов на выводе, например:
|
||||||
|
|
||||||
|
**с**** ut **** – ****c** **2,3,4,5,10 1.**** txt **** ** _(показывать только символы на указанных позициях: 2,3,4,5,10);_
|
||||||
|
|
||||||
|
Команда **expand** превращает символы табуляции в несколько пробелов, а **unexpand** наоборот – пробелы в символы табуляции.
|
||||||
|
|
||||||
|
Команда **fmt** предназначена для форматирования текста различными способами, например:
|
||||||
|
|
||||||
|
**fmt** **1.**** txt **** ** _(вывести содержимое файла в одну строку);_
|
||||||
|
|
||||||
|
**fmt** **–**** w **** 10 1. ****txt**** ** _(вывести содержимое файла в строки не больше 10 символов каждая);_
|
||||||
|
|
||||||
|
Команда **od** предназначена для конвертации текста в другой формат, например:
|
||||||
|
|
||||||
|
**od** **–**** c **** 1. ****txt**** ** _(отобразить в кодировке_ _ASCI__);_
|
||||||
|
|
||||||
|
Команда **tr** предназначена для замены и удаления символов в текстовом потоке, например:
|
||||||
|
|
||||||
|
**echo** **"**** HELLO ****" |** **tr** **–**** t ****L**** l **** ** _(заменить " __L__" на " __l__" в полученном на вводе тексте);_
|
||||||
|
|
||||||
|
Команда **split** может разбить файла по каким-либо критериям, например:
|
||||||
|
|
||||||
|
**split** **–**** l **** 2 1. ****txt** _(разбить содержимое файла по две строчки);_
|
||||||
|
|
||||||
|
Команда **uniq** предназначена для поиска повторяющихся строк, например:
|
||||||
|
|
||||||
|
**uniq** **–**** u **** 1. ****txt** _(показать только уникальные строки);_
|
||||||
|
|
||||||
|
**Sed** – отдельный мощный инструмент, понимающий групповые символы, шаблоны и т.д. Будет рассмотрен немного подробнее в дальнейших урока. Работает, например, так:
|
||||||
|
|
||||||
|
**sed –e 's/socks/people/' 1.txt ** _( __заменить__ в __файле__ слово_ _"socks"_ _на_ _"people");_
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
**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__")._
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
**103.4** Потоки, конвейеры и перенаправления
|
||||||
|
|
||||||
|
Студент должен уметь управлять потоками для обработки текстовых данных
|
||||||
|
|
||||||
|
**Изучаем** :
|
||||||
|
|
||||||
|
- перенаправление стандартных ввода, вывода и ошибок;
|
||||||
|
- передачу вывода одной команды на ввод другой;
|
||||||
|
- использование вывода одной команды в качестве аргументов другой;
|
||||||
|
- получение выходных данных в файл и на стандартный вывод.
|
||||||
|
|
||||||
|
**Термины и утилиты: **
|
||||||
|
|
||||||
|
- tee
|
||||||
|
- xargs
|
||||||
|
|
||||||
|
- stdin
|
||||||
|
- stout
|
||||||
|
- stderr
|
||||||
|
|
||||||
|
Linux традиционно использует потоки для ввода, вывода и ошибок. Обычно ввод – это клавиатура или файлы, а вывод ошибок и результатов происходит в консоль. Но часто бывает нужно объединить последовательность команд в конвейер, или отправить результат в какой-нибудь файл.
|
||||||
|
|
||||||
|
Для того чтобы послать на ввод программы некоторые данные используется знак " **<**", например:
|
||||||
|
|
||||||
|
**wc** **<** **file**** 1. ****txt**** ** _(использовать в качестве ввода для программы_ _wc_ _файл_ _file __.__ txt__);_
|
||||||
|
|
||||||
|
Для того чтобы послать вывод программы куда-нибудь, кроме стандартного направления, используется знак " **>**", например:
|
||||||
|
|
||||||
|
**ls** **>** **list****. ****txt** _(перезаписать содержимое файла_ _list __.__ txt_ _результатом команды_ _ls__);_
|
||||||
|
|
||||||
|
**ls** **>>** **list****. ****txt** _(дописать в файл_ _list __.__ txt_ _результат команды_ _ls__);_
|
||||||
|
|
||||||
|
Для ввода, вывода и ошибок используются следующие обозначения:
|
||||||
|
|
||||||
|
- **Stdin** _– стандартный ввод программы (обозначение "0");_
|
||||||
|
- **Stdout** – _стандартный вывод программы (обозначение "1");_
|
||||||
|
- **Stderr** – _стандартные ошибки программы (обозначение "2");_
|
||||||
|
|
||||||
|
Например:
|
||||||
|
|
||||||
|
**l**** s bob 2> error.txt**
|
||||||
|
|
||||||
|
**ls**** bob **** > **** result ****.**** txt **** 2> **** error ****.**** txt**
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
**103.5** Управление процессами в Linux
|
||||||
|
|
||||||
|
Студент должен уметь создавать, отслеживать и завершать процессы
|
||||||
|
|
||||||
|
**Изучаем** :
|
||||||
|
|
||||||
|
- запуск задач в активном и фоновом режимах;
|
||||||
|
- настройку выполнения задачи после выхода из системы;
|
||||||
|
- способы отслеживания и сортировки активных процессов;
|
||||||
|
- завершение процессов.
|
||||||
|
|
||||||
|
**Термины и утилиты: **
|
||||||
|
|
||||||
|
- &
|
||||||
|
- bg
|
||||||
|
- fg
|
||||||
|
- jobs
|
||||||
|
- kill
|
||||||
|
- nohup
|
||||||
|
- ps
|
||||||
|
- top
|
||||||
|
- free
|
||||||
|
- uptime
|
||||||
|
- pgrep
|
||||||
|
- pkill
|
||||||
|
- killall
|
||||||
|
- screen
|
||||||
|
|
||||||
|
Linux содержит в себе множество инструментов для управления запущенными процессами: от сортировки, отслеживания состояния и загрузки системы до перевода процессов в фоновый режим и обратно.
|
||||||
|
|
||||||
|
Посмотреть запущенные процессы в текущей консоли можно при помощи команды **jobs**. Для вывода всех запущенных в данный момент процессов (независимо от консоли) используется команда ps с различным набором ключей, например:
|
||||||
|
|
||||||
|
**Ps**** aux** _(вывести процессы всех пользователей);_
|
||||||
|
|
||||||
|
Можно вывести процессы в консоль, отображая иерархию из взаимосвязи командой **pstree**.
|
||||||
|
|
||||||
|
Для отображения идентификаторов процессов по определенному критерию можно использовать команду **pgrep** , например:
|
||||||
|
|
||||||
|
**pgrep** **-**** l **** - ****u**** root **** ** _(отобразить все процессы пользователя_ _root__)_
|
||||||
|
|
||||||
|
Чтобы запустить процесс в фоновом режиме необходимо указать ключ **&** , например:
|
||||||
|
|
||||||
|
**Sleep** **999 & ** _(запустить задачу_ _sleep_ _999 в фоновом режиме);_
|
||||||
|
|
||||||
|
Для перевода процесса из фонового режима в активный используется команда **fg** , обратно – **bg**. В качестве аргумента команды следует указать номер процесса (_его можно увидеть на выводе команды_ _jobs_).
|
||||||
|
|
||||||
|
Для того чтобы процесс продолжал выполняться после выхода пользователя из системы, его следует запускать командой **nohup** , например:
|
||||||
|
|
||||||
|
**nohup** ** **** sleep **** 1000 & ** _(запустить процесс "__sleep_ _1000" в фоновом режиме, и выполнять его даже в случае выхода пользователя из системы);_
|
||||||
|
|
||||||
|
Для остановки процесса используется команда **kill** , например:
|
||||||
|
|
||||||
|
**kill** **2625** _ (выключить процесс с_ _PID__=2625);_
|
||||||
|
|
||||||
|
**killall**** sleep **** ** _(выключить все процессы с именем_ _sleep_ _для текущего пользователя)_ **;**
|
||||||
|
|
||||||
|
Для остановки процессов по указанному критерию можно использовать команду **pkill** , например:
|
||||||
|
|
||||||
|
**pkill**** refox **** ** _(остановить процесс, в имени которого есть символы " __refox__");_
|
||||||
|
|
||||||
|
Для просмотра информации о работающих процессах в режиме реального времени используется диспетчер задача **top**. Используя его можно сортировать запущенные задачи по различным критериям и останавливать их _(клавиша_ _K__)_ мягко _(__sigterm__)_ и жестко _(__sigkill__)_.
|
||||||
|
|
||||||
|
Для отображения информации о времени работы системы и среднем времени загрузки АЧ используется команда **uptime**.
|
||||||
|
|
||||||
|
Для отображения информации о загрузке ОЗУ и раздела подкачки используется команда **free**.
|
||||||
|
|
||||||
|
Кроме того, Linux поддерживает работу с несколькими «экранами» при помощи команды **screen**. Она позволяет, в числе всего прочего, сворачивать запущенные приложения в консоли, в рамках той же консоли, например:
|
||||||
|
|
||||||
|
**screen** **-**** S ****yandex**** ping ****ya****. ****ru**** ** _(создать экран с именем_ _yandex_ _для команды_ _ping __ya__. __ru__ );_
|
||||||
|
|
||||||
|
**screen** **–**** ls **** ** _(показать свернутые экраны);_
|
||||||
|
|
||||||
|
**screen** **-**** r ****yandex**** ** _(развернуть экран с именем_ _yandex__)._
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
**103.6** Изменение приоритетов процессов
|
||||||
|
|
||||||
|
Студент должен уметь менять приоритеты выполняющихся процессов
|
||||||
|
|
||||||
|
**Изучаем** :
|
||||||
|
|
||||||
|
- приоритеты по умолчанию создаваемых процессов;
|
||||||
|
- запуск программ с повышенным и пониженным приоритетом;
|
||||||
|
- изменение приоритета уже запущенной программы.
|
||||||
|
|
||||||
|
**Термины и утилиты: **
|
||||||
|
|
||||||
|
- nice
|
||||||
|
- ps
|
||||||
|
- renice
|
||||||
|
- top
|
||||||
|
|
||||||
|
Несмотря на то, что Linux является довольно стабильной системой, которая умеет автоматически подстраиваться под текущие условия работы, иногда приходится вручную управлять приоритетами процессов, для контроля над ресурсами ПК.
|
||||||
|
|
||||||
|
Для просмотра текущих процессов используется команда **ps** , например:
|
||||||
|
|
||||||
|
**p**** s aux** _(отобразить процессы по всем пользователям);_
|
||||||
|
|
||||||
|
**ps** **–**** eo ****user**** , ****pid**** , ****pcpu**** , ****nice**** , ****comm** _(отобразить процессы, выводя указанные данные);_
|
||||||
|
|
||||||
|
Приоритет процесса определяется параметром **nice** (в Ubuntu может принимать значения от -20 до +19): чем ниже значение, тем выше приоритет. По умолчанию значение nice для каждого процесса равно "-10".
|
||||||
|
|
||||||
|
Для запуска процесса с указанным приоритетом используется команда **nice** , например:
|
||||||
|
|
||||||
|
**nice** **–**** n **** -20 **** ping ****ya****. ****ru**** ** _(запустить процесс с приоритетом "-20");_
|
||||||
|
|
||||||
|
Для изменения приоритета запущенного процесса используется команда **renice** , например:
|
||||||
|
|
||||||
|
**renice 15 –p 10241 ** _(изменить приоритет процесса с_ _PID_ _"10421");_
|
||||||
|
|
||||||
|
**renice** **-15 –**** u ****semaev**** ** _(изменить приоритет процессов пользователя " __semaev__");_
|
||||||
|
|
||||||
|
Также для использования доступен диспетчер задач **top** , выводящий сведения о запущенных процессах в реальном режиме в консоль. Для изменения критерия сортировки процессов используются символы "<" и ">".
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
**103.7** Поиск информации при помощи регулярных выражений
|
||||||
|
|
||||||
|
Студент должен уметь осуществлять поиск необходимых файлов и информации внутри них.
|
||||||
|
|
||||||
|
**Изучаем** :
|
||||||
|
|
||||||
|
- создание простых регулярных выражений;
|
||||||
|
- инструменты, опирающиеся на эти выражения, для поиска файлов.
|
||||||
|
|
||||||
|
**Термины и утилиты: **
|
||||||
|
|
||||||
|
- grep
|
||||||
|
- egrep
|
||||||
|
- fgrep
|
||||||
|
- rgrep
|
||||||
|
- sed
|
||||||
|
- регулярные выражения.
|
||||||
|
|
||||||
|
Частой задачей в Linux является поиск необходимых файлов и сортировка информации внутри них. Для этой задачи служат регулярные выражения – специальный язык поиска и изменения информации, обладающий своим синтаксисом.
|
||||||
|
|
||||||
|
При отборе информации можно использовать стандартные групповые символы:
|
||||||
|
|
||||||
|
- **^** _ - начало строки;_
|
||||||
|
- **$ ** _ - конец строки;_
|
||||||
|
- **. ** _ - любой символ;_
|
||||||
|
- **\<**** a **** ** _- слово, начинающееся с " __a__";_
|
||||||
|
- **\>**** a **** ** _-_ _c __лово, заканчивающееся на "__ a__";_
|
||||||
|
- **a**** - ****z**** ] **** -** _диапазон от " __a__" до " __z__";_
|
||||||
|
- **[^t]**** **** -** _не буква " __t__";_
|
||||||
|
- **a|z**** **** -** _" __a__" __или "__ z __"__ ;_
|
||||||
|
- и т.д.;
|
||||||
|
|
||||||
|
Для простой сортировки набора строк используется команда **grep** , например:
|
||||||
|
|
||||||
|
**grep**** oo ****file****. ****txt** _(отобразить в файле текст с двумя буквы « __o__ » подряд);_
|
||||||
|
|
||||||
|
**ls** **|** **grep**** ile** _(вывести названия содержимого каталога с набором символов ' __ile__');_
|
||||||
|
|
||||||
|
**grep**** ple ****$** **file****. ****txt** _(отобразить в файле_ _file __.__ txt_ _строки, заканчивающиеся на ' __ple__');_
|
||||||
|
|
||||||
|
Для расширенной сортировки и поиска по сложным регулярным выражениям используется команда **egrep** (также можно использовать **grep** **-**** E**), например:
|
||||||
|
|
||||||
|
**egrep** **'^(****b ****|**** d****)'** **file****. ****txt** _(все строки, что начинаются с " __b__" или " __d__");_
|
||||||
|
|
||||||
|
**egrep** **'^[****a ****-**** k****]'** **file****. ****txt** _(все строки, что начинаются с " __a__" по " __k__");_
|
||||||
|
|
||||||
|
Для быстрой сортировки и поиска по набору символов без регулярных выражений используется команда **fgrep** (также можно использовать **grep** **-**** F**), например:
|
||||||
|
|
||||||
|
**fgrep**** c ****$** **file****. ****txt** _ (отобразить в_ _file __.__ txt_ _последовательность символов " __c__ $");_
|
||||||
|
|
||||||
|
Для рекурсивной (включая вложенные каталоги и файлы) сортировки и поиска по набору символов используется команда **rgrep** (также можно использовать **grep** **-**** R**), например:
|
||||||
|
|
||||||
|
**rgrep** ** **** word**_ (вывести позиции содержащие « __word__ » в текущем и всех вложенных каталогах__);_
|
||||||
|
|
||||||
|
Для изменения текстового потока согласно заданным правилам используется редактор sed, например:
|
||||||
|
|
||||||
|
**sed** **–**** e ****' ****s**** / ****oo**** / ****aa**** /' ****file****. ****txt** _(заменить в_ _file __.__ txt_ _все " __oo__" на " __aa__" );_
|
||||||
|
|
||||||
|
**sed** **–**** re ****' ****s**** /^( ****B**** | ****b**** )/ ****C****' ****file****. ****txt** **>** **newfile****. ****txt** _(в строках, начинающихся с « __B__ » или « __b__ », заменить первую букву на «С» и сохранить результат в_ _newfile __.__ txt__);_
|
||||||
Reference in New Issue
Block a user