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

Продолжаем популяризировать Linux. Я не буду вас грузить историей возникновения утилиты grep, её расшифровкой – оно вам надо? Нет. Сразу перейдём к практике.

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

  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 практических примеров. К слову, я успешно фильтровал текстовые логи на миллионы строк без особых проблем, так что инструмент великолепный!

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

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

Расшифровка значений индикаторов команды top

Нагрузка на процессор (CPU) это первые два значения:

Читайте также:  Как установить Skype в Ubuntu 14.04 и 14.10

Cpu(s): 31.7%us, 4.2%sy, 0.0%ni, 54.4%id, 9.2%wa, 0.2%hi, 0.4%si, 0.0%st

Кнопка «1» выведет нагрузку по каждому из процессоров.

PID — id процесса USER — пользователь запустивший процесс PR — приоритет процесса NI — nice процесса VIRT — количество памяти, которое может использовать программа RES — потребление физической памяти SHR — размер потенциальной памяти, которая может быть задействована совместно с другими программами

S — состояние процесса:

S — завершен D — ожидание R — выполняется T — остановлен Z — зависCPU — использование ресурсов центральным процессором MEM — использование оперативной памяти сервера TIME+ — время работы процесса COMMAND — название процесса

Клавиша «С» отобразит в строке COMMAND ключи с которыми запущены процессы.

Клавиша «Q» — выйти из команды Top.

Синтаксис grep и find

Начнём с оператора find. Синтаксис файловой поисковой команды выглядит так:

find [где искать] [параметры] [-опции] [действия]

Некоторые употребительные параметры:

  • -depth : поиск в текущей папке и подкаталогах;
  • -version : вывести версию команды;
  • -print : показывать полные имена файлов (в Linux они могут быть сколь угодно большими);
  • -type f : поиск исключительно файлов;
  • -type d – поиск только директорий (папок).
Синтаксис grep и find

Перечень доступных опций (указываются через дефис):

  • name : файловый поиск по имени;
  • user : поиск по имени владельца файла;
  • perm : по атрибуту «режим доступа»;
  • mtime : по времени последнего изменения (редактирования) файла;
  • group : по группе;
  • atime : по дате последнего открытия файла;
  • newer : поиск файла с датой, более новой, чем заданная в шаблоне директивы;
  • size : по размеру файла в байтах;
  • nouser : поиск файлов, не имеющих введённого атрибута «владелец».

Синтаксис grep:

grep [опции] шаблон [где искать]

Под опциями следует понимать дополнительные уточняющие параметры, например, использование инверсного режима или поиск заданного количество строк.

В шаблоне указывается, что нужно искать, используя непосредственно заданную строку или регулярное выражение.

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

Синтаксис grep и find

Рассмотрим наиболее употребительные параметры grep:

  • -b : выводить номер блока перед выдачей результирующей строки;
  • -c : необходимо подсчитать число вхождений искомого фрагмента;
  • -i : поиск без учёта регистра;
  • -n : выдавать на стандартное устройство вывода номер строки, в которой найден искомый фрагмент или шаблон;
  • – l : в результате выдачи должны присутствовать только имена файлов с найденным поисковым фрагментом;
  • -s : игнорировать вывод ошибок;
  • -w : поиск фрагмента, опоясанного с двух сторон пробелами;
  • -v : инвертированный поиск, то есть отображение всех строк, не содержащих заданный фрагмент;
  • -e : параметр указывает, что далее следует регулярное выражение, имеющее собственный синтаксис;
  • -An : вывод искомого фрагмента и предыдущих n строк;
  • -Bn : то же, но со строками, идущими после шаблона.
Читайте также:  Альтернатива Cue Splitter для Linux и MacOS

Теперь имеет смысл перейти от теоретической части к практической.3

Основные команды Bash

Команда CD

Если вы хотите перемещаться в терминале линукс по каталогам, вам нужно использовать команду cd.

Для того чтобы переместиться в ваш домашний каталог, вам нужно выполнить команду:

cd /home/YOUR_USER_NAME или проще: cd ~

Для того, чтобы перейти в каталог на уровень выше, выполните команду cd..

Знаете ли, что командная оболочка реализовала очень удобную функцию подсказок вам нужно перейти в каталог с длинным названием, freebestwebhosting, вам не нужно вводить ее полностью. Вместо этого, вы можете ввести только часть букве free и нажат на клавишу tab, и интерпретатор bash самостоятельно дополнит команду.

Команда CAT

Для того, чтобы посмотреть содержимое какого нибудь файла, например , вы можете воспользоваться командой cat. Пример:

cat

Команда GREP

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

cat /var/log/apache2/ | grep

В результате запроса вы увидите данные только по пользователю с ip адреса

Команда TAIL

Tail — это очень полезная команда линукс, с ее помощью можно в реальном времени смотреть изменяемые файлы, например те же логи apache, или логи доступа к серверу. Для того, чтобы просматривать логи в реальном времени, нужно ввести команду:

tail -f /var/log/apache2/

Команда SSH

SSH — это протокол подключения к серверу. Для того, чтобы подключиться к серверу по ssh, введите команду в формате:

ssh [email protected] и нажмите enter.

И если ваш сервер поддерживает подключение по ssh, вам нужно будет ввести пароль и вы попадете на нужный вам сервер в оболочку Bash или оболочку, которая настроена по умолчанию на вашем сервере.

Читайте также:  Пошаговая инструкция: Как открыть интернет-магазин китайских товаров

Стандартный порт SSH — 22. Многие администраторы, для того, чтобы немного обезопасить сервер закрывают доступ к ssh через порт 22, а открывают альтернативный порт, например 2231.

Если ваш сервер находиться на не стандартном порте 22, а на порте к примеру 2231, тогда команда подключения через ssh к серверу будет выглядеть так:

ssh [email protected] -p2231

Как изменить права на файл (chmod)

У файлом, как и у каталогов, есть права и владельцы эти файлов. Для того, чтобы изменить права на файл .htaccess вашего сайта введите команду:

chmod 644 .htaccess

Командой для имения прав можно воспользоваться и в другом случае, когда вам нужно изменить права на каталог, подкаталоги и файлы в них. Для этого введите опцию к команде chmod, -R.

Пример команды:

chmod -R 775 catalog

Как получить root права в linux и выполнять команды от root. Команда sudo.

Для получения root прав, без смены пользователя, можно воспользоваться командой sudo перед основной командой. Пример команды sudo:

sudo less /etc/php5/apache2/

Команда сменить владельца файла или каталога (chown и sudo)

У файлов и у каталогов есть владельцы. Если вы зашли под пользователем root и создали файл , затем разлогинились и зашли под обычным пользователем, например под пользователем john, вы не сможете обратиться к этому файлу, т.к. у файла владелец пользователь root.

Для смены владельца файла или каталога, нужно воспользоваться двумя командами: sudo и chown:

sudo chown john:john затем enter и введите пароль для root и снова enter.

Команда sudo позволит без входа пол пользователем root, выполнить команду от root. jonh — это ваш пользователь, второй john — это группа пользователя john (может быть любой).

Резюме

В данной статье мы рассмотрели несколько полезных команд оболочки Bash в Linux и Unix подобных системах. Эти команды вам могут пригодиться для настройки собственного VDS сервера, например от хостинга Таймвеб.

В следующих статьях мы рассмотрим не менее полезные команды оболочки bash, познакомимся с консольным редактором nano и vim, файловыми менеджером mc и многими другими.