b8c4c21f

Поиск


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

[methody@susanin methody]$ ps aux | grep bash methody 3459 0.0 3.0 2524 1636 tty2 S 14:30 0:00 -bash methody 3734 0.0 1.1 1644 612 tty2 S 14:50 0:00 grep bash

Пример 7.12. Поиск строки в выводе программы

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



Начало  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий