Grep a najděte pravidla operátorů pro Linux
- 4311
- 316
- Ing. Felix Musil
Operační systémy Unix/Linux zpočátku neměly grafické rozhraní, protože byly zaměřeny na použití serveru. Dnes v tomto ohledu nejsou nižší než Windows, a proto uživatelé používající tento OS zřídka znají syntaxi a účel hlavních příkazů Linuxu. Mezitím se jedná o velmi výkonný nástroj, který vám umožní rychle provádět operace, které jsou pomocí základních nástrojů OS problematické nebo nemožné. Dnes se setkáte s operátory Find a Grep, které jsou základní pro systém souborů všech distribucí Linuxu.
Jmenování operátorů Find a Grep
Tým Find v Linuxu je operátorem příkazového řádku, který pracuje se soubory obcházejícími existující hierarchii. Umožňuje vám hledat soubory pomocí mnoha filtrů a po jejich úspěšném vyhledávání provádět určité akce přes soubory. Mezi kritéria pro vyhledávání souborů patří téměř všechny dostupné atributy, od data stvoření k usnesení.
Tým Grep v Linuxu se také týká vyhledávačů, ale uvnitř souborů. Doslovný překlad týmu je „globální tisk regulárních výrazů“, ale tuleň zde znamená závěr výsledků práce na zařízení ve výchozím nastavení, což je obvykle monitor. Operátor, který má obrovský potenciál, se používá poměrně často a umožňuje vám prohledat jeden nebo více souborů podle zadaných fragmentů (šablony). Vzhledem k tomu, že terminologie v Linuxu se výrazně liší od takových oken, má mnoho uživatelů významné potíže s používáním těchto příkazů. Pokusíme se odstranit tuto nevýhodu.
Grep a najděte syntaxi
Začněme s operátorem nalezení. Syntaxe týmu vyhledávání souborů vypadá takto:
Najděte [kde hledat] [Parametry] [-optic] [Action]
Některé parametry používají:
- -Hloubka: Vyhledejte v aktuální složce a subkatalisté;
- -Verze: Přineste verzi týmu;
- -Tisk: Zobrazit kompletní názvy souborů (v Linuxu mohou být libovolně velké);
- -Typ F: Vyhledejte výhradně soubory;
- -Typ D - Search pouze adresář (složky).
Seznam dostupných možností (označených prostřednictvím spojovníku):
- Název: vyhledávání souborů podle názvu;
- Uživatel: Hledejte název vlastníka souboru;
- Perm: Podle atributu „Přístupový režim“;
- mtime: v době poslední změny (úpravy) souboru;
- Skupina: podle skupiny;
- atime: do data posledního otevření souboru;
- Novější: hledání souboru s datem více než směrnicí uvedenou v šabloně;
- Velikost: velikostí souboru v bajtech;
- Nouser: Vyhledejte soubory, které nemají zadaný atribut „majitel“.
Syntaxe grep:
Šablona grep [možnosti] [kde hledat]
Možnosti by měly být chápány jako další objasňující parametry, například použití inverzního režimu nebo hledání daného počtu řádků.
Šablona označuje, co je třeba hledat pomocí přímo specifikovaného řádku nebo regulárního výrazu.
Možnost použití regulárních výrazů může výrazně rozšířit schopnosti vyhledávání. Indikace standardního závěru může být užitečná, pokud je úkolem filtrovat chyby zaznamenané v protokolech nebo hledat proces PID ve výsledcích příkazu PS, což může být více -stránka.
Zvažte nejběžnější parametry GRAS:
- -B: Před vydáním výsledné linky zobrazte číslo bloku;
- -C: Je nutné vypočítat počet položek požadovaného fragmentu;
- -I: Hledání bez registrace registru;
- -N: Vydejte číslo řádku do standardního výstupního zařízení, ve kterém byl nalezen požadovaný fragment nebo šablonu;
- - L: V důsledku vydávání by měla být přítomna pouze jména souborů s nalezeným vyhledávacím fragmentem;
- -S: Ignorujte výstup chyby;
- -W: Hledejte fragment obklopený na obou stranách prostory;
- -V: Invertované vyhledávání, to znamená zobrazení všech řádků, které neobsahují daný fragment;
- -E: Parametr ukazuje, že další regulární výraz, který má svou vlastní syntaxi;
- -AN: Závěr požadovaného fragmentu a předchozích linek N;
- -BN: Stejné, ale s řádky, které se pohybují po šabloně.
Nyní má smysl přejít z teoretické části k praktické.3
Příklady používání veřejných služeb
Pokud víte, co je kombinatorika, pak by měl být zastoupen skutečný počet možných kombinací vyhledávacích týmů. Omezíme se pouze na nejužitečnější příklady, které vám mohou být užitečné během práce.
Vyhledejte text v souborech
Pojďme mít práva správce a máme úkol najít konkrétního uživatele v obrovském souboru hesla. Budeme potřebovat poměrně jednoduchý tým, který označuje cestu zveřejňování souborů:
Grep nameuser /etc /passwd
Pokud je výsledek vyhledávání pozitivní, dostaneme výsledný řádek přibližně následujícího typu:
Nameuser: X: 1021: 1021: nameuser ,,,:/home/user:/bin/bash
Pokud potřebujete vyhledat fragment textu bez zohlednění registru registru, bude tým vypadat takto:
GRAS -I "Nameuser" /Etc /Passwd
V tomto případě bude nalezen uživatel nameuser a jeho „jmenovec“, jakož i všechny ostatní možné kombinace.
Závěr několika řádků
Získáme všechny chyby z protokolu okna Shell Xorg.log. Úkol je komplikován skutečností, že po chybném případě může následovat řetězec obsahující cenné informace. Rozhodne se, zda příkaz nutíme zobrazit několik řádků pomocí řádku „PP“ jako šablony:
GRAS -A5 "pp"/var/log/xorg.0.log
Dostaneme řádek obsahující šablonu a 5 řádků.
GRAS -C3 "PP"/VAR/LOG/XORG.0.log
Linka výstup s fragmentem textu a třemi řádky před a po.
Používání regulárních výrazů v Grep
Toto je jeden z nejsilnějších nástrojů Linux, který výrazně rozšiřuje možnost vytvoření šablony vyhledávání. Regulární výrazy mají svou vlastní syntaxi, docela komplikované. Nebudeme se do toho ponořit a omezit se na příklad použití RV. Jak již víte, k označení, že regulární výraz se dále používá, je použit parametr -e.
Nechte nás v souboru zpráv.2 Musíme zachytit všechny řádky na září:
Grep "^září 09"
Výsledkem bude něco takového:
9. září 01:11:45 GS124 NTPD [2243]: Časový reset +0.197579 s
9. září 01:19:10 GS124 NTPD [2243]: Časový reset +0.203484 s
Pro vyhledávání šablony umístěné na konci linie baru se používá symbol „$“:
Grep "termín.$ "Zprávy
Výsledek:
17. června 19:01:19 Clonémové jádro: Termín log démona.
11. září 06:30:54 Cloneme jádro: Log Daemon Term.
A zde je příklad použití regulárního výrazu, který vám umožňuje vyhledávat řádky obsahující libovolná čísla s výjimkou nuly:
Grep "[1-9]"/var/log/xorg.1.log
Pomocí rekurzivního vyhledávání v Grep
Pokud jste obeznámeni s termínem „rekurze“, pak se v Linuxu použije tato technika, zejména k vyhledávání fragmentu v několika souborech umístěných v katalogu a jejích subcatacích. Možnost -R bude znamenat přítomnost rekurze. Podívejme se na fragment „jmenování.Org "v souborech umístěných v podřízených složce /etc /apache1:
Gras -r "jmenování.Org "/etc/apache1/
Výsledkem může být něco takového:
/etc/apache1/vhosts.D/ jmenovain.Org
Pokud název souboru není vyžadován, použijeme -h: h:
Grep -h -r "nameomain.Org "/etc/apache1/
Hledat slova
Standardní vyhledávání fragmentu QWE skončí vydáním všech slov, ve kterých je tento fragment nalezen: KBQWE, QWE123, AAFRQWE32. Chcete -li omezit vyhledávání pouze daným fragmentem, musíte použít parametr -W:
Gras -w "qwe", kde najít
Hledejte dvě nebo více slov
Komplikujte úkol: Musíme najít všechny řádky, kde jsou nalezena dvě slova. Tým bude takto:
GRAS -W "Word01 | Word02" Where_ Nalezení
Počet řádků
Pokud je to nutné pro výpočet. Kolikrát je požadovaný fragment nalezen v souboru, použijeme návrh s parametrem -C:
GRAS -C "'Text" Where_ Find
Parametr -N pomáhá zjistit, ve které řádce je nalezena požadovaná šablona:
GRAS -N "Nuser" /Etc /Passwd
Invertované vyhledávání pomocí Grep
Někdy úkolem vyhledávání pomocí Grep obsahem souborů není najít samotný záznam, ale řádky, kde tento fragment chybí. Možnost -V nám pomůže:
Gras -V "txt", kde se najdete
Výstup názvu souboru
Musíte najít všechny soubory v zadaném adresáři obsahujícím požadovanou šablonu. To lze provést pomocí parametru -l. Úplný příkaz výstupu souborů obsahujících řetězec „Secondary“ ve složce /ETC bude vypadat následovně:
Grep -l "sekundární" /atd
Barevný výstup pomocí Grep
Zůstat s jinou barvou je skvělý způsob, jak vizualizovat požadovaný záznam, který výrazně snižuje zátěž na očích, pokud je operace často prováděna. Ukazuje se, že GRAS má možnost pro tento výstup výsledků vyhledávání:
Grepor -Color "Secondary" /atd
Pokračujeme k posouzení příkladů používání nástroje Find v Linuxu.
Vyhledejte všechny soubory
Pro výběr seznamu souborů umístěných v aktuálním katalogu používáme příkaz v následujícím formátu:
Nalézt .
Pokud potřebujete zobrazit celé jméno souborů, použijeme příkaz
Nalézt . -Tisk
Výstup souboru v daném katalogu
Pro vyhledávání souborů ve složce definované uživatelem používáme příkaz
Nalézt ./atd
Jak však můžete najít soubory obsahující daný fragment v aktuálním katalogu:
Nalézt . -NÁZEV "*.Gif "
Pokud musí být vyhledávání provedeno bez účtování registru, je třeba příkaz upravit:
Při vyhledávání podle názvu nezohledněte registr:
Nalézt . -Ve mě "*.Gif "
Omezení hloubky vyhledávání
Dalším poměrně typickým úkolem je vyhledat soubory v konkrétní složce podle názvu:
Nalézt . -maxDepth01 1 -Name "*.Html "
Invertování šablony
Už jsme považovali analog týmu, abychom hledali řádky, které neobsahují daný fragment. Stejně tak můžete dělat se soubory, které neodpovídají dané šabloně:
Nalézt . -ne -Name "Uživatel*"
Hledejte podle několika kritérií
Uvádíme příklad příkazového řádku pomocí nástroje Find pro vyhledávání podle dvou kritérií pomocí operátora NOT (vyloučení):
Nalézt . -Name "User" -Not -Name "*.Html "
V tomto případě nebudou soubory, jejichž název obsahuje fragment uživatele, ale které mají prodloužení, nalezeny. Místo operátora výjimky můžete použít logické "/" nebo "::
Najít -Name "*.JS "-o -Name"*.Sql "
V tomto případě získáme úplný seznam souborů s oběma rozšířeními umístěnými v aktuálním adresáři.
Hledejte v několika katalozích
Pokud potřebujeme najít soubory ve dvou katalozích, uveďte z mezery:
Najít -typ f ./test01 ./test02 -Name "*.Sql "
Vyhledejte skryté soubory
V Linuxu, stejně jako ve Windows, existují skryté soubory, které se při použití příkazu Find nezobrazí bez speciálního symbolu. Tento symbol je Tilda a směrnice bude mít následující vzhled:
najít ~ -Name ".*"
Hledejte soubory v Linuxu podle oprávnění
Někdy je třeba filtrovat katalog pro určitou masku práv. Například, pokud potřebujeme najít soubory s atributem 0661, použijeme příkaz:
Nalézt . -Perm 0661
Úkol filtrování souborů s atributem „pouze pro čtení“ je vyřešen následovně:
Find /etc /user -perm /u = r
Jak ale bude vypadat vyhledávání spustitelných souborů v katalogu ETC:
Najít /etc -perm /a = x
Hledejte soubory podle skupin/uživatelů
Správce musí často čelit úkolu hledat soubory, které jsou vlastností konkrétního uživatele a/nebo skupiny. Hledat uživatelem:
Nalézt . -Uživatel Slavko
Pro skupiny uživatelů se používá další parametr:
Najít /var -group devs
Hledejte podle data poslední úpravy
Viditelný formát data souboru v systému Linux je právě datum jeho úpravy (stejný princip se používá v systému Windows). K vytvoření seznamu podle data se použije možnost Mtime. Řekněme, že musíme najít soubory změněné před dvěma měsíci:
Najít /home -Mime 60
Mezi atributy souboru patří datum jeho posledního objevu (bez změn). Takové soubory jsou zobrazeny následujícím příkazem:
Najít /home -atime 60
Můžete také nastavit časový interval. Pro vyhledávání souborů upravených před čtyřmi až dvěma měsíci používáme směrnici:
Find /Home -Mtime +60 -Mtime -120
Jak však najít čerstvě změněné soubory (před dvěma hodinami):
Najít /home -cmin 120
Hledejte soubory podle velikosti
Podezření, že někdo používá disk pro filmy? Hledáme soubory velikost 1.4 GB:
Najít / -velikost 1400 m
Nebo použijte rozsah:
Najít / -velikost +1400 m -velikosti -2800 m
Vyhledejte prázdné soubory/katalogy
Ano, nebuďte překvapeni. Úkolem obnovení pořadí na médiu je charakteristická nejen pro Android OS. V Linuxu se rozhodne s pomocí takové směrnice:
Najít /var -type f -empty
Příklad akcí s nalezenými soubory
V Linuxu může tým Find rekurzivně provádět určité akce s těmito soubory, vyhledávání, pro které provádíte. K provedení příkazů souboru musíte použít parametr exec. Směrnice pro zobrazení informací o všech souborech pomocí příkazu LS bude tedy vypadat takto:
Nalézt . -exec ls -l \;
Jak však jednoduše můžete odstranit dočasné soubory s danou maskou v adresáři /home /temp:
Find /tmp -type f -Name "*.html ”-exec rm -f \;
Samozřejmě, pro začátečníky, použití příkazového řádku s velkým počtem možností je poněkud komplikovaný způsob, ale v Linuxu je to v pořadí věcí. A jak byste vyřešili problémy popsané zde ve Windows? To je stejné. V tomto aspektu je Linux jasně před námi.