Команды grep и pipe: мощные инструменты командной строки Linux
В этом видео мы подробно рассмотрим две важнейшие команды для работы с командной строкой Linux: мощный инструмент фильтрации текста grep и оператор pipe для создания конвейеров команд.
Вы узнаете, как эффективно использовать регулярные выражения для поиска информации в файлах, освоите основные опции grep (включая игнорирование регистра, рекурсивный поиск и инвертированный вывод), а также научитесь создавать эффективные комбинации команд с помощью пайпа. Эти навыки значительно упростят администрирование систем и работу с системными логами.
⇓ Запись видеоурока на RuTuBe ⇓
⇓ Запись видеоурока во ВКонтакте ⇓
⇓ Запись видеоурока на YouTuBe ⇓
Назначение команды grep в администрировании Linux
grep (global regular expression print) - вывод глобального регулярного выражения. Суть этой команды заключается в том, чтобы выполнять поиск по необходимым нам данным.
Допустим, мы хотим посмотреть в журнале работы сервера все записи, в которых те или иные операции были выполнены неудачно. Для этого выполним следующее
cd /var/log
- переходим в каталог, где хранятся журналы
grep 'failed' syslog
- искать слово failed в файле системного журнала syslog
grep -i (ignore-case) - игнорирование регистра, т.е. не важно, где встречаются большие и маленькие буквы
grep -i 'failed' syslog
- искать слова игнорируя регистр, т.е. не важно большие или маленькие буквы
grep -i 'fAiLeD' syslog
- тоже самое
grep -r (recursive) - рекурсивный поиск, т.е. во всех папках и подпапках
grep -ir 'failed'
- добавляем ключ -r и убираем имя файла, таким образом команда будет искать слово failed любого регистра во всех файлах и папках нашего текущего положения.
Как вы видите, довольно много записей у нас появилось. Сначала идет название файла, а потом текст строки, в которой упоминается наше слово.
Хорошо, давайте попробуем вытащить не все записи, а просто список файлов, в которых упоминается это слово?
grep -l (list) - выводит имя каждого файла, в котором совпадают данные. Я сам для себя сделал ассоциацию со словом list (список) хотя нигде в официальной документации этого не нашел. Но, по сути, она как команда ls, выводит список содержимого, так что, почему бы и нет.
grep -irl 'failed'
- получаем список файлов в которых есть слово failed
Еще один часто используемый ключ это v
grep -v (invert) - инвертированный вывод. Почему-то назвали v, по-видимому, так как ключ i уже занят. Ну, будем считать что они взяли его из середины слова J Да, попадаются иногда ключи, которые не вписывают в общую логику именования ключей.
Данный ключ выводим все, где нет, того, что мы указали.
grep -v 'failed' syslog
- получаем вывод всех строк, в которых это слово не присутствует.
Мы поможем вам легко получить базовые навыки работы с Linux, без лишней теории и воды. Убедитесь, что осваивать новое может быть просто!
Получите бесплатный доступ к первым модулям курса.
Назначение команды pipe в администрировании Linux
С командой grep разобрались, однако, намного чаще она используется в связке с другими командами, а делать связку помогает команда pipe которая обозначается значком вертикальной черты.
|
| (pipe) - пайп (трубопровод, конвейер)
В чем же суть её работы, она позволяет передавать данные из одной команды, в другую
ls -la | grep log
- мы получаем вывод строк, в которых присутствуют символы log
ls -la
- тут выводится полный список, потому от передается в программу grep и она отфильтровывает список по нужному условию
ls -la | grep ^d
- данная команда выводит только список директорий. Значке вверх означает, с каких символов должна начинаться строка, а буква d означает в записи, что это директория.
ls -la | grep -v ^d
- вывести все, кроме папок
Кстати, данным методом тоже удобно искать ранее введенные команды, если вы их вводили давно:
history | grep cd
Так можно находить сложные команды, которые писали давно, скопировать, отредактировать и применить вновь.
Резюме: Подведем итоги работы с командами grep и pipe
В данном уроке мы изучили команды:
grep (global regular expression print) - вывод глобального регулярного выражения
grep -i (ignore-case) - игнорирование регистра
grep -r (recursive) - рекурсивный поиск
grep -l (list) - выводит имя каждого файла
grep -v (invert) - инвертированный вывод
| (pipe) - пайп (трубопровод, конвейер) который позволяет передавать данные из одной команды в другую.