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.