Правила использования операторов grep и find в Linux

В операционной систем Линукс для просмотра больших текстовых файлов используется команда more. В отличии от less, она позволяет читать файлы по одной странице.

Назначение операторов find и grep

Команда find в Linux является оператором командной строки для работы с файлами в обход существующей иерархии. Она позволяет производить поиск файлов с использованием множества фильтров, а также выполнять некие действия над файлами после их успешного поиска. Среди критериев поиска файлов – практически все доступные атрибуты, от даты создания до разрешения.

Назначение операторов find и grep

Команда grep в Linux также относится к поисковым, но внутри файлов. Буквальный перевод команды – «глобальная печать регулярных выражений», но под печатью здесь понимается вывод результатов работы на устройство по умолчанию, каковым обычно является монитор. Обладая огромным потенциалом, оператор используется достаточно часто и позволяет производить поиск внутри одного или нескольких файлов по заданным фрагментам (шаблонам). Поскольку терминология в Linuxе существенно отличается от таковой в среде Windows, очень многие пользователи испытывают значительные трудности с использованием этих команд. Постараемся устранить этот недостаток.

Сразу практика

  1. Поиск определённой строки в текстовом файле (посмотрим в логе веб-сервера, кто там пытается перебирать пароль на админку сайта): # cat | grep «LOGIN\ FAILED» Очень много записей. Как видите, grep работает как будто текстовый фильтр. Кстати, можно использовать регулярные выражения. Например указатели начала или конца строки (^ и $ соответственно). Можно использовать различные конвейеры для поэтапной фильтрации различных подстрок. Об этом следующий пример.
  2. Поиск строк, которые НЕ ВКЛЮЧАЮТ указнные шаблон (используется ключ -v). Например, посмотрим, у кого из пользователей есть интерактивная оболочка: # cat /etc/passwd | grep -v «nologin» | grep -v «false» 4 пользователя. Все легальные. Хорошо )
  3. Поиск строк во всех файлах в указанном каталоге. Часто использую этот пример, чтобы найти какой-то фрагмент в исходниках. Например найдём, в каких файлах упоминается имя скрипта “” # grep -rn «» Ключи -r означает рекурсивный поиск в подкаталогах (от текущего) в каждом файле. А -n – указывает имя файла и номер строки. Очень удобно потом открыть файл редактором и перейти на нужный фрагмент.
  4. То же самое, но вывести ТОЛЬКО имена файлов: # grep -rl «»
  5. Регистронезависимый поиск. Да, шаблон регистрозависим. Если есть подозрение, что где-то в примерах выше будет указано имя файла “” – не прокатит. Дабы не опростоволоситься, стоит добавить ключик -i и всё будет хорошо: # grep -irl «»
Сразу практика

Достаточно ли этого? На мой взгляд – вполне. Есть конечно какие-то замудрёные экзотические сценарии, но колоссальный спектр задач покрывается решениями из этих 5 практических примеров. К слову, я успешно фильтровал текстовые логи на миллионы строк без особых проблем, так что инструмент великолепный!

Читайте также:  Публичная бета 11 MacOS 3 Big Sur: что нового и другие достижения

Вам так же понравится: Команда tar в Linux: создание архивов Команда chmod в Linux – изменение прав доступа Как установить Kali Linux рядом с Windows? LVM в Linux – работа с логическими дисками Обучение Oracle, Linux, FreeBSD, Cisco Установка Kali Linux на VirtualBox

Сразу практика

Синтаксис

Рассмотрим синтаксис команды.

more опции файлы

Основные опции:

  • -d — показывает в конце страницы подсказки, например «Нажмите пробел для продолжения».
  • -f — считает логические строки.
  • -с — текст показывается сверху, при этом стирает предыдущий вывод.
  • -p — очистка терминала, как и параметр «-с». Используется для того, чтобы не было прокрутки и информацию было удобно читать.
  • -s — заменяет пустые строки, которые стоят рядом на одну.
  • -u — убирает подчеркивание.
  • —help — вывести справочную информацию.
  • -v — текущая версия утилиты.

После запуска утилиты, управление осуществляется горячими клавишами.

Чтобы осуществить переход на другую страницу используется клавиша «Пробел». Для смещения на одну строчку вниз — «Enter».

Основные горячие клавиши:

  • h — мини help. Выдаст описание команд.
  • :f — утилита покажет имя текущего файла и количество строк.
  • z или «Пробел» — переход на следующую страницу.
  • = — выводит количество строк на данный момент.
  • q — выход из more.

Примеры

Для первого примера запустим утилиты без параметров, а именно прочитаем лог «», который состоит из двух страниц.

more Итак, это была только первая страница. Перейдем на вторую, нажав клавишу «Пробел».

Утилита more позволяет читать несколько файлов. В этом случае нужно вводить имена документов по очереди, разделяя их пробелом. Вывод текста будет осуществляться в таком же порядке.

Читайте также:  Как пользоваться командами chown и chmod в Linux?

Прочитаем два лога. Один , второй —

more

Как видно из скриншота, первый лог оказался небольшим. Чтобы перейти во второй документ нажмем «Пробел».

Откроем документ, которые лежит в домашнем каталоге /home/ya/dokument.

more /home/ya/dokument

Как видно из скриншота выше, в документе много пустых строк, чтобы убрать повторы, введем команду с опцией «-s».

more -s /home/ya/dokument

Управление пакетным менеджером

В «Терминале» операционной системы Linux есть довольно интересная функция – инсталляция приложений и процессов из предустановленных пакетов. В некоторых системах они могут отличаться, поэтому я укажу примеры для самых востребованных версий.

Debian, Ubuntu, Linux Mint – apt 

  1. sudo apt install имя_пакета – устанавливает необходимый пакет.
  2. sudo apt-add-repository адрес_ресурса – добавляет сторонний ресурс для скачивания программ оттуда.
  3. sudo apt update – обновляет информацию об установленных пакетах программ.
  4. sudo apt upgrade – обновляет все содержащиеся пакеты до самых свежих версий.
  5. sudo apt remove имя_пакета – удаляет выбранный пакет данных.
  6. sudo apt purge имя_пакета – деинсталлирует определенный пакет со всеми зависимостями, если есть необходимость освободить место на диске.
  7. sudo apt autoremove – удаляет все ненужные связи, безымянные пакеты и прочие временные файлы.

Red Hat, Fedora, CentOS – dnf

  1. sudo dnf install имя_пакета – устанавливает необходимый пакет.
  2. sudo dnf config-manager —add-repo адрес_репозитория – добавляет сторонний ресурс для скачивания оттуда программ.
  3. sudo dnf upgrade – обновляет существующие пакеты до самых свежих.
  4. sudo dnf remove имя_пакет – удаляет ненужный пакет.
  5. sudo dnf autoremove – удаляет все ненужные зависимости.

Arch Linux, Manjaro – pacman

  1. sudo pacman -S имя_пакета – устанавливает пакет процессов или приложений.
  2. sudo yaourt -S имя_пакета – устанавливает пакет из ресурса AUR, если его нет на главном ресурсе.
  3. sudo pacman -Sy – обновляет информацию о пакетах.
  4. sudo pacman -Syu – обновляет все пакеты до новейших версий.
  5. sudo pacman -R имя_пакета – удаляет ненужные комплекты приложений и процессов.
  6. sudo pacman -Rs имя_пакета – деинсталлирует ненужный пакет со всеми зависимостями.
Читайте также:  Как перезагрузить графический интерфейс Ubuntu