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.