Grep and знаходити правила операторів для Linux
- 4416
- 1101
- Hubert Hintz
Спочатку операційні системи UNIX/Linux не мали графічного інтерфейсу, оскільки вони були зосереджені на використанні сервера. Сьогодні у цьому плані вони не поступаються Windows, саме тому користувачі, які використовують цю ОС, рідко знають синтаксис та мету основних команд Linux. Тим часом це дуже потужний інструмент, який дозволяє швидко виконувати операції, які, використовуючи основні інструменти ОС, є проблематичним або неможливим. Сьогодні ви зустрінете операторів пошуку та grep, які є основними для файлової системи всіх розподілів Linux.
Призначення операторів пошуку та грепів
Команда пошуку в Linux - це оператор командного рядка для роботи з файлами, що обходять існуючу ієрархію. Це дозволяє шукати файли за допомогою багатьох фільтрів, а також виконувати певні дії через файли після їх успішного пошуку. Серед критеріїв пошукових файлів майже всі доступні атрибути, з дати створення до вирішення.
Команда GREP у Linux також посилається на пошукові системи, але всередині файлів. Буквальний переклад команди - це "глобальний друк регулярних виразів", але печатка тут означає висновок про результати роботи на пристрої за замовчуванням, який, як правило, є монітором. Маючи величезний потенціал, оператор використовується досить часто і дозволяє шукати в одному або декількох файлах відповідно до зазначених фрагментів (шаблонів). Оскільки термінологія в Linux суттєво відрізняється від таких у Windows, багато користувачів мають значні труднощі з використанням цих команд. Ми спробуємо усунути цей недолік.
Grep і знайти синтаксис
Почнемо з оператора пошуку. Синтаксис команди пошуку файлів виглядає так:
Знайдіть [де шукати] [параметри] [-оптичні] [дія]
Деякі використовують параметри:
- -Глибина: пошук у поточній папці та підкаталістах;
- -Версія: Принесіть версію команди;
- -Друк: Показати повні імена файлів (у Linux вони можуть бути довільно великими);
- -Введіть F: пошук виключно файлів;
- -Введіть D - Пошук лише каталог (папки).
Список доступних варіантів (зазначено через дефіс):
- Ім'я: Пошук файлу за іменем;
- Користувач: пошук за іменем власника файлу;
- PERM: Відповідно до атрибута "Режим доступу";
- Mtime: до моменту останньої зміни (редагування) файлу;
- Група: за групою;
- Atime: до дати останнього відкриття файлу;
- Новіше: пошук файлу з датою більше, ніж директива, вказана в шаблоні;
- Розмір: за розміром файлу у байтах;
- Нусер: Пошук файлів, які не мають введеного атрибута "власника".
Синтаксис Grep:
Grep [параметри] шаблон [де шукати]
Параметри слід розуміти як додаткові уточнюючі параметри, наприклад, використання зворотного режиму або пошук заданої кількості рядків.
Шаблон вказує на те, що потрібно шукати, використовуючи безпосередньо вказану лінію або звичайний вираз.
Можливість використання регулярних виразів може значно розширити можливості пошуку. Індикація стандартного висновку може бути корисною, якщо завданням є фільтр помилок, записаних у журналах, або пошук процесу PID в результатах команди PS, що може бути багато -сторінкою.
Розглянемо найпоширеніші параметри GRAS:
- -B: Відображення номера блоку перед випуском отриманої лінії;
- -C: Необхідно обчислити кількість записів потрібного фрагмента;
- -I: пошук без реєстрації реєстру;
- -N: видайте номер рядка до стандартного вихідного пристрою, в якому знайдено бажаний фрагмент або шаблон;
- - L: В результаті видачі повинні бути присутні лише імена файлів із пошуковим фрагментом;
- -S: ігнорувати вихід помилки;
- -W: Пошук фрагмента, оточений з обох боків, пробілами;
- -V: перевернутий пошук, тобто відображення всіх рядків, які не містять заданого фрагмента;
- -Е: Параметр вказує на те, що подальший регулярний вираз, який має власний синтаксис, випливає;
- -AN: Висновок бажаного фрагмента та попередніх N ліній;
- -BN: Те саме, але з рядками, що йдуть за шаблоном.
Тепер має сенс перейти від теоретичної частини до практичної.3
Приклади використання комунальних послуг
Якщо ви знаєте, що таке комбінаторика, то справжня кількість можливих комбінацій пошукових груп повинна бути представлена. Ми обмежимо себе лише найкориснішими прикладами, які можуть бути корисними для вас під час роботи.
Шукайте текст у файлах
Давайте маємо права адміністратора, і ми маємо завдання знайти конкретного користувача у величезному файлі паролів. Нам знадобиться досить проста команда, що вказує шлях публікації файлу:
Grep nameuser /etc /passwd
Якщо результат пошуку позитивний, ми отримаємо отриманий рядок приблизно наступного типу:
NameUser: x: 1021: 1021: nameuser ,,:/home/user:/bin/bash
Якщо вам потрібно шукати фрагмент тексту, не враховуючи реєстр реєстру, команда буде виглядати так:
Gras -i "nameuser" /etc /passwd
У цьому випадку користувача NameSer та його "іменник" NameSer, а також усі інші можливі комбінації.
Висновок декількох рядків
Давайте отримаємо всі помилки з журналу Window Shell Xorg.журнал. Завдання ускладнюється тим, що після помилкового рядка, що містить цінну інформацію. Визначається, чи змусимо команду відображати кілька рядків, використовуючи рядок "PP" як шаблон:
GRAS -A5 "PP"/var/log/xorg.0.журнал
Ми отримуємо лінію, що містить шаблон і через 5 рядків після нього.
GRAS -C3 "PP"/var/log/xorg.0.журнал
Вихід лінії з фрагментом тексту та трьома рядками до та після.
Використання регулярних виразів у Grep
Це один з найпотужніших інструментів Linux, який значно розширює можливість формування шаблону пошуку. Регулярні вирази мають власний синтаксис, досить складний. Ми не будемо заглиблюватися в нього, обмежуючи себе прикладом використання RV. Як ви вже знаєте, щоб вказати на те, що регулярний вираз використовується додатково, використовується параметр -e.
Давайте у файлі повідомлень.2 Нам потрібно зловити всі лінії на вересень:
Grep "^вересень 09"
Результатом буде щось подібне:
09 вересня 01:11:45 GS124 NTPD [2243]: Скидання часу +0.197579 с
09 вересня 01:19:10 GS124 NTPD [2243]: Скидання часу +0.203484 с
Для пошуку шаблону, розташованого в кінці лінії, використовується символ "$":
Grep "Термін.$ "Повідомлення
Результат:
17 червня 19:01:19 Ядро клону:.
11 вересня 06:30:54 Ядро Cloneme: Термін Daemon Log Daemon.
І ось приклад використання звичайного виразу, який дозволяє шукати рядки, що містять будь -які числа, крім нуля:
Grep "[1-9]"/var/log/xorg.1.журнал
Використання рекурсивного пошуку в Grep
Якщо ви знайомі з терміном "рекурсія", то в Linux ця методика використовується, зокрема, для пошуку фрагмента у кількох файлах, розташованих у каталозі та його підкаталах. Варіант -r вказує на наявність рекурсії. Давайте шукатимемо фрагмент "названий.Org "у файлах, розташованих у підкаталах папки /etc /apache1:
Gras -r "названа.Org "/etc/apache1/
Результатом може бути щось подібне:
/etc/apache1/vhosts.D/ названиймаїн.Org
Якщо ім'я файлу не потрібно, ми використовуємо -h: h:
Grep -h -r "названа.Org "/etc/apache1/
Пошук слів
Стандарт Пошук фрагмента QWE закінчиться видачею всіх слів, в яких знайдено цей фрагмент: KBQWE, QWE123, AAFRQWE32. Щоб обмежити пошук лише за допомогою заданого фрагмента, потрібно використовувати параметр -w:
Gras -w "qwe" де знайти
Шукайте два або більше слів
Ускладніть завдання: нам потрібно знайти всі рядки, де знайдені два слова. Команда буде такою:
GRAS -W "Word01 | Word02", де_ знайти
Кількість рядків
Якщо потрібно для обчислення. Скільки разів бажаний фрагмент знаходиться у файлі, ми використовуємо дизайн з параметром -C:
GRAS -C "" текст ", де_ знайти
Параметр -n допомагає з’ясувати, в якому рядку знайдено потрібний шаблон:
Gras -n "nuser" /etc /passwd
Перевернутий пошук за допомогою grep
Іноді завдання пошуку за допомогою grep за вмістом файлів - це не знайти сам запис, а рядки, де цей фрагмент відсутній. Варіант -V допоможе нам:
Gras -v "txt", де_ знайти
Вихід імені файлу
Нехай вам потрібно знайти всі файли у вказаному каталозі, що містить потрібний шаблон. Це можна зробити за допомогою параметра -l. Отже, повна команда для виводу файлів, що містять рядок "вторинний" у папці /тощо, буде виглядати наступним чином:
Grep -l "вторинний" /тощо
Випуск кольору за допомогою Grep
Перебування з іншим кольором - це чудовий спосіб візуалізувати потрібний запис, який значно зменшує навантаження на очі, якщо операція часто виконується. Виявляється, GRAS має можливість цього виходу результатів пошуку:
Grepor -кольоровий "вторинний" /тощо
Ми переходимо до розгляду прикладів використання утиліти пошуку в Linux.
Шукайте всі файли
Щоб зняти список файлів, розташованих у поточному каталозі, ми використовуємо команду у наступному форматі:
Знаходити .
Якщо вам потрібно показати повне ім’я файлів, ми використовуємо команду
Знаходити . -Друкувати
Вихід файлу в заданому каталозі
Для пошуку файлів у папці, визначеній користувачем, ми використовуємо команду
Знаходити ./тощо
Але як можна знайти файли, що містять даний фрагмент у поточному каталозі:
Знаходити . -Ім'я "*.Gif "
Якщо пошук повинен здійснюватися без обліку реєстру, команду потрібно змінити:
Не враховуйте реєстр під час пошуку за іменем:
Знаходити . -В мені "*.Gif "
Обмеження глибини пошуку
Ще одне досить типове завдання - пошук файлів у певній папці відповідно до заданого імені:
Знаходити . -maxdepth01 1 -name "*.Html "
Інвертування шаблону
Ми вже розглядали аналог команди для пошуку ліній, які не містять заданого фрагмента. Таким же чином ви можете зробити з файлами, які не відповідають заданому шаблону:
Знаходити . -НЕ -NAME "користувач*"
Пошук за кількома критеріями
Наведемо приклад командного рядка за допомогою утиліти пошуку для пошуку за двома критеріями за допомогою оператора NOT (виключення):
Знаходити . -Назва "користувач" -not -name "*.Html "
У цьому випадку файли, назва яких включає фрагмент користувача, але які мають розширення, не знайдуться. Замість оператора винятку ви можете використовувати логічний "/" або "::
Знайти -name "*.js "-o -name"*.Sql "
У цьому випадку ми отримаємо повний перелік файлів з обома розширеннями, розташованими в поточному каталозі.
Шукайте в декількох каталогах
Якщо нам потрібно знайти файли у двох каталогах, просто вкажіть з розриву:
Знайти тип F ./test01 ./test02 -name "*.Sql "
Шукайте приховані файли
У Linux, як у Windows, є приховані файли, які при використанні команди Find не будуть показані без спеціального символу. Цей символ - Тільда, і Директива матиме наступний вигляд:
знайти ~ -name ".*"
Пошук файлів у Linux за допомогою дозволів
Іноді є потреба фільтрувати каталог для певної маски прав. Наприклад, якщо нам потрібно знайти файли з атрибутом 0661, ми використовуємо команду:
Знаходити . -Perm 0661
Завдання фільтрування файлів з атрибутом "Тільки для читання" вирішується наступним чином:
Знайти /etc /user -perm /u = r
Але як виглядатиме пошук виконуваних файлів у каталозі ETC:
Знайти /etc -perm /a = x
Пошук файлів груп/користувачів
Адміністратору часто доводиться стикатися з завданням пошуку файлів, які є властивістю певного користувача та/або групи. Пошук користувачем:
Знаходити . -Користувач Славко
Для груп користувачів використовується інший параметр:
Знайти /var -group devs
Пошук за датою останньої модифікації
Видимий формат дати файлу в ОС Linux - це саме дата його модифікації (той самий принцип використовується в Windows). Щоб сформувати список за датою, використовується опція MTIME. Скажімо, нам потрібно знайти файли, змінені два місяці тому:
Знайти /Home -Mtime 60
Серед атрибутів файлу є дата останнього відкриття (без змін). Такі файли відображаються наступною командою:
Знайти /Домашній -Atime 60
Ви також можете встановити часовий інтервал. Для пошуку файлів, змінених з чотирьох до двох місяців тому, ми використовуємо Директиву:
Знайти /Home -Mtime +60 -mtime -120
Але як знайти щойно змінені файли (дві години тому):
Знайти /Home -Cmin 120
Шукайте файли за розміром
Підозрюють, що хтось використовує диск для фільмів? Ми шукаємо файли Розмір 1.4ГБ:
Знайти / -Size 1400м
Або використовуйте діапазон:
Знайти / -Size +1400m -Size -2800m
Пошук порожніх файлів/каталогів
Так, не дивуйтеся. Завдання відновлення порядок у ЗМІ характерне не лише для Android OS. У Linux це вирішується за допомогою такої директиви:
Знайти /var -Type f -Eversty
Приклад дій із знайденими файлами
У Linux команда пошуку може рекурсивно виконувати певні дії з тими файлами, пошуком, для яких ви проводите. Щоб виконати команди файлів, вам потрібно використовувати параметр exec. Отже, Директива про показ інформації про всі файли за допомогою команди LS буде виглядати так:
Знаходити . -exec ls -l \;
Але як просто ви можете видалити тимчасові файли за допомогою даної маски в каталозі /дому /температурі:
Знайти /tmp -type f -name "*.html ”-exec rm -f \;
Звичайно, для початківця, використання командного рядка з величезною кількістю варіантів здасться дещо складним способом, але в Linux це в порядку речей. І як би ви вирішили проблеми, описані тут у Windows? Отож. У цьому аспекті Linux явно попереду.
- « Як керувати комп'ютером за допомогою голосової команди
- Вибір електронної книги (читач книг) для читання »