Операционная система Linux

Поиск


Зачастую пользователю нужно найти только упоминания чего-то конкретного среди данных, выводимых утилитой. Обычно эта задача сводится к поиску строк, в которых встречается определенное слово или комбинация символов. Для этого подходит стандартная утилита grep. grep может искать строку в файлах, а может работать как фильтр: получив строки со стандартного ввода, она выведет на стандартный вывод только те строки, где встретилось искомое сочетание символов. Мефодий решил поинтересоваться процессами bash, которые выполняются в системе:

Пример 7.12. Поиск строки в выводе программы (html, txt)

Первый аргумент команды grep - та строка, которую нужно искать в стандартном вводе, в данном случае это "bash", а поскольку ps выводит сведения по строке на каждый процесс, Мефодий получил только процессы, в имени которых есть "bash". Однако Мефодий неожиданно нашел больше, чем искал: в списке выполняющихся процессов присутствовали две строки, в которых встретилось слово "bash", т. е. два процесса: один - искомый - командный интерпретатор bash, а другой - процесс поиска строки "grep bash", запущенный Мефодием после ps. Это произошло потому, что после разбора командной строки bash запустил оба дочерних процесса, чтобы организовать конвейер, и на момент выполнения команды ps процесс grep bash уже был запущен и тоже попал в вывод ps. Чтобы в этом примере получить правильный результат, Мефодию следовало бы добавить в конвейер еще одно звено: | grep -v grep, эта команда исключит из конечного вывода все строки, в которых встречается "grep".



Содержание раздела