GNU/Linux >> Znalost Linux >  >> Linux

základy grep

Tento článek představuje některé nástroje, zejména grep , nástroj příkazového řádku systému Linux®, který můžete použít k vyhledávání adresářů nebo souborů, které odpovídají zadaným regulárním výrazům.

Co je grep ?

Oficiální odpověď:

grep prohledá pojmenované vstupní soubory (nebo standardní vstup, pokud neurčíte soubor nebo nepoužijete jediný spojovník (- ) jako název souboru) pro řádky obsahující shodu s daným vzorem. Ve výchozím nastavení grep vytiskne odpovídající řádky.

Hezčí odpověď:

Vyhledejte v souboru, adresáři nebo výstupu něco konkrétního, podobně jako Ctrl + f ve Windows®. Použijte tuto funkci k zacílení přesně na to, co potřebujete.

Základy

Často je nejjednodušší způsob, jak ukázat, jak příkaz funguje, pomocí příkladů.

Všechny uživatele můžete vidět v /etc/passwd soubor s následujícím příkazem:

# cat /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql❌27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
sher❌1002:1002::/home/sher:/bin/bash

Pomocí grep , můžete tento seznam zúžit a najít jednoho uživatele.

Najděte konkrétního uživatele :

Uveďte uživatele, ale filtrujte výstup zobrazující pouze řádek s sher v něm.

# cat /etc/passwd | grep 'sher'
sher❌1002:1002::/home/sher:/bin/bash

Nebo vyhledejte stejného uživatele jediným příkazem:

# grep 'sher' /etc/passw
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

V následujícím příkladu vyhledejte všechny uživatele s přístupem bash:

# grep 'bash' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

Příznaky

Jako většina příkazů Linuxu, grep používá příznaky, obvykle jedno nebo více písmen, kterým předchází jedna nebo více pomlček, aby přidal další funkce.

-v :Zobrazit vše, co nezahrnuje zadaný vyhledávací vzor:

# grep -v 'nologin' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

-i :Zobrazit shody bez ohledu na velká a malá písmena, což je užitečné, když přesně nevíte, co potřebujete:

# grep -i 'SHER' /etc/passwd
sher❌1002:1002::/home/sher:/bin/bash

Vyhledat více vzorů

grep používá symbol potrubí (| ) znamená nebo umožňuje vyhledávat více než jednu věc najednou. K vyhledání několika věcí najednou použijte jednu z následujících metod:

\ :Escapuje další znak, čáru (| ), což mu umožní pracovat jako nebo :

# grep 'sher\|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

-E :Interpretuje speciální znaky, například | jako nebo :

# grep -E 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

egrep příkaz dělá to samé:

# egrep 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

Kombinování příznaků

K upřesnění hledání můžete použít různé kombinace v kombinaci.

Následující příklad ukazuje všechny uživatele, kteří nejsou sher nebo stojan ,bez ohledu na případ vzoru obsahu souboru:

# egrep -vi 'SHER|RACK' /etc/passwd

Praktické příklady

Následující části pokrývají další použití grep a zavést další užitečné příkazy.

Ignorovat komentáře

V Linuxu komentujete řádky přidáním symbolu libry (# ) na začátku řádku. Tímto způsobem můžete přidávat své vlastní poznámky a skripty nebo programy podepisovat komentáře a tyto řádky nespouštět.

Chcete-li zobrazit soubory ignorující tyto komentáře, použijte tbe následující příkaz:

# grep -v ^'#' /file

Můžete dokonce spustit grep nad jiným grep příkaz.

Vypište například seznam souboru, který ignoruje řádky s komentářem, a poté vyhledejte něco konkrétního:

# grep -v ^'#' /file | grep 'hello'

Historie vyhledávání

Většina linuxových systémů uchovává protokol o provedených příkazech, ke kterému můžete přistupovat pomocí příkazu history . Když zkombinujete history pomocí grep , můžete velmi efektivně prozkoumat, co bylo na vašem systému doposud spuštěno.

Zkontrolujte passwd příkazy run a další příkazy obsahujícípasswd vzor:

# history | grep 'passwd'

Najít příkazy spuštěné v konkrétní den:

# history | grep '2021-05-10'

Zkontrolujte, které příkazy byly spuštěny v určitou dobu:

# history | grep '2021-05-10 11:00:'

Kontrola portů a přihlášení uživatele root

Vypište webový provoz běžící na portech 80 a 443 :

# netstat -plnt | egrep '80|443'

Můžete použít ^ v grep příkaz k zobrazení pouze řádků začínajících vaším vyhledávacím vzorem.

Například spusťte následující příkaz a zkontrolujte, zda systém umožňuje přihlášení root:

# grep ^'Permit' /etc/ssh/sshd_config

Prohledávací protokoly s hlavou a ocasem

Použijte top pro zobrazení prvních deseti řádků protokolu pokusů o přihlášení:

# head /var/log/secure

Použijte tail pro zobrazení řádků na konci protokolu pokusů o přihlášení:

# tail /var/log/secure

Použijte last příkaz k zobrazení prvních deseti řádků posledních přihlášení:

# last | head -10

Použijte tail -f sledovat, jak soubor roste v reálném čase. Můžete například vidět poslední pokusy o přihlášení a sledovat probíhající pokusy. Pokud se někdo pokusí přihlásit, můžete to vidět tak, jak se to děje, pomocí následujícího příkazu:

# tail -f /var/log/secure
Ctrl + C to exit

Další nástroje

Pomocí nástrojů v této sekci můžete experimentovat se svými nově nabytými dovednostmi.

vim nebo nano

vi , vim a nano jsou nejběžnější textové editory v Linuxu. Můžete je použít k úpravě souboru, podobně jako v programu Poznámkový blok ve Windows.

Otevřete a vytvořte nový soubor, otestujte :

# vim /test
Akce Posloupnost kláves Vysvětlení
Chcete-li začít psát nový obsah: i Připravte se na vložení textu
Ukončení bez uložení: Esc :q! Ukončit režim vkládání a ukončit
Ukončení a uložení: Esc :wq! Opustit režim vkládání, zapisovat a ukončit

echo

echo je jednoduchý příkaz, který říká Linuxu, aby zopakoval, co jste právě napsali. Toto je efektivní pro testování grep příkazy bez předchozího vytvoření nového souboru.

Například ahoj zobrazení:

# echo 'hello'
hello

Zobrazit ahoj a vyhledejte prostřední písmena:

# echo 'hello' | grep 'ell'
hello

Můžete dokonce použít echo pro zobrazení více řádků pomocí -e a \n přidat nové řádky.

Zobrazit ahoj a ho na samostatných řádcích:

# echo -e 'hi\nho'
hi
ho

Zobrazit ahoj a ho na samostatných řádcích a vyhledejte hi :

# echo -e 'hi\nho' | grep 'hi'
hi

sed

Jako grep , sed má mnoho využití, ale tento příkaz primárně používáte k vyhledání a nahrazení zadaného obsahu. Zde je několik základních příkladů, jak vybrat konkrétní řádky:

Nejprve použijte vim pro vytvoření souboru:

# vim /test

Po otevření editoru zadejte následující řádky:

1 Hi
2 How
3 Are
4 You

Zobrazit nový soubor:

# cat test
1 Hi
2 How
3 Are
4 You

Použijte sed vrátit vše kromě prvního řádku:

# sed 1d test
2 How
3 Are
4 You

Vraťte pouze první řádek:

# sed 1q test

nebo

# sed '1!d' test
1 Hi

Vraťte pouze druhý až čtvrtý řádek:

# sed '2,4!d' test
2 How
3 Are
4 You

Závěr

Existuje mnoho dalších nástrojů, které můžete použít, například awk , cut , sort , xargs ,a tak dále. Nyní, když víte, jak vytvořit soubor pomocí echo , můžete s nimi efektivněji experimentovat.


Linux
  1. Rozdíl mezi /bin/false &/sbin/nologin

  2. /usr/bin Vs /usr/local/bin Na Linuxu?

  3. Je povoleno místo mezi #! A /bin/bash v Shebangu?

  1. Proč /bin/sh ukazuje na /bin/dash a ne /bin/bash?

  2. Nainstalujte binární soubory do /bin, /sbin, /usr/bin a /usr/sbin, interakce s --prefix a DESTDIR

  3. Kdy mám použít /dev/shm/ a kdy /tmp/?

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Kdy musím použít #!/bin/bash a kdy #!/bin/sh?

  3. chroot selže - nelze spustit příkaz `/bin/bash':Žádný takový soubor nebo adresář