Grep ir raskite „Linux“ operatorių taisykles

Grep ir raskite „Linux“ operatorių taisykles

Iš pradžių „Unix“/„Linux“ operacinės sistemos neturėjo grafinės sąsajos, nes jos buvo sutelktos į serverio naudojimą. Šiandien jie nėra prastesni už „Windows“, todėl vartotojai, naudojantys šią OS, retai žino sintaksę ir pagrindinių „Linux“ komandų tikslą. Tuo tarpu tai yra labai galingas įrankis, leidžiantis greitai atlikti operacijas, kurios, naudojant pagrindinius OS įrankius, yra problemiškas arba neįmanomas. Šiandien jūs susitiksite su „Find“ ir „Grep“ operatoriais, kurie yra pagrindiniai visų „Linux“ paskirstymo failų sistemai.

Find ir Grep operatorių paskyrimas

„Find“ komanda „Linux“ yra komandinės eilutės operatorius, dirbantis su failais, apeinančiais esamą hierarchiją. Tai leidžia ieškoti failų, naudojant daugybę filtrų, taip pat atlikti tam tikrus veiksmus, o ne failus, po jų sėkmingos paieškos. Tarp failų paieškos kriterijų yra beveik visi galimi atributai, nuo sukūrimo dienos iki skiriamoji geba.

„Grep“ komanda „Linux“ taip pat nurodo paieškos variklius, tačiau failų viduje. Žodinis komandos vertimas yra „visuotinis įprastų išraiškų spausdinimas“, tačiau antspaudas čia reiškia, kad pagal numatytuosius nustatymus prietaise yra darbo rezultatų išvada, kuri paprastai yra monitorius. Turėdamas didžiulį potencialą, operatorius naudojamas gana dažnai ir leidžia ieškoti viename ar daugiau failų pagal nurodytus fragmentus (šablonai). Kadangi „Linux“ terminija žymiai skiriasi nuo tokių „Windows“, daugelis vartotojų turi didelių sunkumų, naudodami šias komandas. Mes bandysime pašalinti šį trūkumą.

Grep ir raskite sintaksę

Pradėkime nuo radimo operatoriaus. Failų paieškos komandos sintaksė atrodo taip:

Raskite [kur ieškoti] [parametrai] [-Optinis] [Veiksmas]

Kai kurie naudoja parametrus:

  • -Gylis: paieška dabartiniame aplanke ir subkatalistuose;
  • -Versija: atsineškite komandos versiją;
  • -Spausdinti: rodyti visus failų pavadinimus („Linux“ jie gali būti savavališkai dideli);
  • -F tipas: paieškos išimtinai failai;
  • -D tipas - tik paieškos katalogas (aplankai).

Galimų parinkčių sąrašas (nurodytas per brūkšnį):

  • Vardas: failo paieška pagal pavadinimą;
  • Vartotojas: ieškokite failo savininko pavadinimu;
  • Perm: pagal atributą „prieigos režimas“;
  • mtime: iki paskutinio failo pakeitimo (redagavimo) laiko;
  • Grupė: pagal grupę;
  • „Atime“: iki paskutinio failo atidarymo datos;
  • Naujesnis: failo, kurio data yra daugiau nei šablone nurodyta direktyva, paieška;
  • Dydis: pagal failo dydį baituose;
  • Nouser: Ieškokite failų, kuriuose nėra įvesto atributo „Savininkas“.

Grep sintaksė:

Grep [parinkčių] šablonas [kur ieškoti]

Parinktys turėtų būti suprantamos kaip papildomi paaiškinantys parametrai, pavyzdžiui, atvirkštinio režimo naudojimas arba tam tikro eilučių skaičiaus paieška.

Šablonas nurodo, ko reikia ieškoti naudojant tiesiogiai nurodytą eilutę arba įprastą išraišką.

Galimybė naudoti įprastas išraiškas gali žymiai išplėsti paieškos galimybes. Standartinės išvados nuoroda gali būti naudinga, jei užduotis yra filtruoti žurnaluose įrašytas klaidas arba ieškoti PID proceso PS komandos rezultatuose, kurie gali būti kelių puslapių.

Apsvarstykite dažniausius GRAS parametrus:

  • -B: Prieš išleisdami gautą eilutę, rodykite bloko numerį;
  • -C: Būtina apskaičiuoti norimo fragmento įrašų skaičių;
  • -I: Ieškokite registruojant registrą;
  • -N: Išleiskite eilutės numerį į standartinį išvesties įrenginį, kuriame buvo rastas norimas fragmentas ar šablonas;
  • - L: Išleidimo metu turėtų būti tik failų pavadinimai su rastu paieškos fragmentu;
  • -S: ignoruoti klaidų išvestį;
  • -W: Ieškokite fragmento, apsupto iš abiejų pusių, tarpų;
  • -V: apversta paieška, tai yra, visų linijų, kuriose nėra nurodyto fragmento, ekranas;
  • -E: Parametras rodo, kad toliau seka savo sintaksė, kuri turi savo sintaksę;
  • -An: norimo fragmento ir ankstesnių N linijų išvada;
  • -BN: tas pats, tačiau eilutėms einant po šabloną.

Dabar prasminga pereiti nuo teorinės dalies į praktiką.3

Komunalinių paslaugų naudojimo pavyzdžiai

Jei žinote, kas yra kombinatorinė, tada turėtų būti pateiktas tikrasis galimų paieškos komandų derinių skaičius. Mes apsiribosime tik naudingiausiais pavyzdžiais, kurie gali būti jums naudingi darbo metu.

Ieškokite teksto failuose

Turėkime administratoriaus teises ir turime užduotį rasti konkretų vartotoją didžiuliame slaptažodžio faile. Mums reikės gana paprastos komandos, nurodančios failo paskelbimo kelią:

Grep nameUSer /etc /passwd

Jei paieškos rezultatas yra teigiamas, gausime maždaug tokio tipo liniją:

„NameUSer“: X: 1021: 1021: nameUSer ,,,:/HOME/vartotojas:/bin/bash

Jei jums reikia ieškoti teksto fragmento neatsižvelgiant į registro registrą, komanda atrodys taip:

GRAS -i "nameUSer" /etc /passwd

Tokiu atveju bus rasta „NameUSer“ vartotojas ir jo „NameSake“ „NameUSer“, taip pat visi kiti įmanomi deriniai.

Kelių eilučių išvada

Paimkime visas klaidas iš lango „Shell Xorg“ žurnalo.žurnalas. Užduoti. Nusprendžiama, jei mes verčiame komandą parodyti keletą eilučių, naudodami eilutę „pp“ kaip šabloną:

GRAS -A5 "pp"/var/log/xorg.0.žurnalas

Gauname eilutę, kurioje yra šablonas ir 5 eilutės po jos.

GRAS -C3 "pp"/var/log/xorg.0.žurnalas

Eilutės išvestis su teksto fragmentu ir trimis eilutėmis prieš ir po.

Reguliarių išraiškų naudojimas grepe

Tai yra vienas iš galingiausių „Linux“ įrankių, kurie žymiai išplečia galimybę suformuoti paieškos šabloną. Reguliarios išraiškos turi savo sintaksę, gana sudėtinga. Mes nesigilinsime į tai, apsiribodami RV naudojimo pavyzdžiu. Kaip jau žinote, norėdami nurodyti, kad toliau naudojama reguliarioji išraiška, naudojamas parametras -e.

Leiskite mums pranešimų faile.2 Rugsėjį turime sugauti visas eilutes:

Grep "^rugsėjo 09"

Rezultatas bus kažkas panašaus:

SEP 09 01:11:45 GS124 NTPD [2243]: Laikas iš naujo +0.197579 s

SEP 09 01:19:10 GS124 NTPD [2243]: Laikas iš naujo +0.203484 s

Norėdami ieškoti šablono, esančio juostos linijos gale, naudojamas „$“ simbolis:

Grep "terminas.$ "Pranešimai

Rezultatas:

Birželio 17 d.

Rugsėjo 11 d. 06:30:54 „Cloneme“ branduolys: žurnalo demono terminas.

Ir čia yra įprastos išraiškos naudojimo pavyzdys, leidžiantis ieškoti eilučių, kuriose yra visi skaičiai, išskyrus nulį:

Grep "[1-9]"/var/log/xorg.1.žurnalas

Rekursinės paieškos naudojimas grepe

Jei esate susipažinęs su terminu „rekursija“, tada „Linux“ ši technika naudojama, visų pirma, norint ieškoti kelių failų, esančių kataloge ir jo subkataluose, fragmento paieškai. Parinktis -R nurodys rekursijos buvimą. Leiskite mums ieškoti fragmento „pavadinimuMain“.Org “failuose, esančiuose aplanko /etc /Apache1 subkataluose:

GRAS -R "NUODRODOS.Org "/etc/apache1/

Rezultatas gali būti kažkas panašaus:

/etc/apache1/vhosts.D/ NUSTATYMAS.Org

Jei failo pavadinimas nereikalingas, mes naudojame -h: h:

Grep -h -r "pavadintasMain.Org "/etc/apache1/

Ieškokite žodžių

Standartinis QWE fragmento paieška pasibaigs išleidus visus žodžius, kuriuose rastas šis fragmentas: KBQWE, QWE123, AAFRQWE32. Norėdami apriboti paiešką tik su nurodytu fragmentu, turite naudoti parametrą -w:

GRAS -W „QWE“, kur rasti

Ieškokite dviejų ar daugiau žodžių

Apsunkinkite užduotį: turime rasti visas eilutes, kuriose randami du žodžiai. Komanda bus tokia:

GRAS -W "Word01 | Word02" Kur_ RASTI

Eilučių skaičius

Jei reikia apskaičiuoti. Kiek kartų norimas fragmentas yra faile, mes naudojame dizainą su -c parametru:

GRAS -C "'TEKSTAS" Kur_ RASTI

Parametras -n padeda išsiaiškinti, kurioje linijoje rastas norimas šablonas:

GRAS -N "NUSER" /etc /Passwd

Apversta paieška naudojant grepą

Kartais užduotis paieškoti naudojant grepą pagal failų turinį yra ne paties įrašo, bet eilučių, kuriose šio fragmento nėra. Parinktis -V mums padės:

GRAS -V „TXT“, kur randa

Failo pavadinimo išvestis

Leiskite rasti visus nurodytame kataloge esančius failus, kuriuose yra norimas šablonas. Tai galima padaryti naudojant -l parametrą. Taigi, visa failų išvesties komanda, kurioje yra eilutė „antrinė“, /ETC aplanke, atrodys taip:

Grep -l „antrinis“ /ir tt

Spalvų išvestis naudojant grepą

Likimas su kita spalva yra puikus būdas vizualizuoti norimą įrašą, kuris žymiai sumažina akių apkrovą, jei operacija dažnai atliekama. Pasirodo, GRAS turi pasirinkimą šiam paieškos rezultatų išvedimui:

Greporas -spalvotas „antrinis“ /kt

Mes apžvelgiame „Find Utility“ naudojimo „Linux“ pavyzdžių pavyzdžius.

Ieškokite visų failų

Norėdami atsiimti failų, esančių dabartiniame kataloge, sąrašą, komandą naudojame tokiu formatu:

Rasti .

Jei jums reikia parodyti visą failų pavadinimą, mes naudojame komandą

Rasti . -Spausdinti

Failo išvestis tam tikrame kataloge

Norėdami ieškoti failų aplanke, kurį apibrėžė vartotojas, mes naudojame komandą

Rasti ./tt

Bet kaip galite rasti failus, kuriuose yra nurodytas fragmentas dabartiniame kataloge:

Rasti . -VARDAS "*.Gif "

Jei paieška turi būti atliekama neatsižvelgiant į registrą, komandą reikia pakeisti:

Nekreipkite dėmesio į registrą ieškant pagal pavadinimą:

Rasti . -Manyje "*.Gif "

Apribojant paieškos gylį

Kita gana tipiška užduotis yra ieškoti failų tam tikrame aplanke pagal nurodytą pavadinimą:

Rasti . -maxdepth01 1 -name "*.Html "

Apversti šabloną

Mes jau apsvarstėme komandos analogą ieškoti linijų, kuriose nėra nurodyto fragmento. Lygiai taip pat galite padaryti su failais, kurie neatitinka nurodyto šablono:

Rasti . -ne -NAME „Vartotojas*“

Ieškokite pagal kelis kriterijus

Pateikiame komandinės eilutės pavyzdį, naudodami „Find Utility“ paieškai dviem kriterijais, naudodamiesi ne (pašalinimo) operatoriumi:

Rasti . -Vardas „Vartotojas“ -not -name “*.Html "

Tokiu atveju failai, kurių pavadinimą sudaro vartotojo fragmentas, tačiau kurie turi plėtinį, nebus rasti. Vietoj išimties operatoriaus galite naudoti loginį „/“ arba „::

Raskite -NAME "*.js "-o -name"*.SQL "

Tokiu atveju gausime išsamų failų sąrašą su abiem plėtiniais, esančiais dabartiniame kataloge.

Ieškokite keliuose kataloguose

Jei mums reikia rasti failus dviejuose kataloguose, tiesiog nurodykite iš spragos:

Raskite -tipo f ./test01 ./test02 -name "*.SQL "

Ieškokite paslėptų failų

„Linux“, kaip ir „Windows“, yra paslėptų failų, kurie, naudojant komandą „Find“, nebus rodomi be specialaus simbolio. Šis simbolis yra „Tilda“, o direktyva turės tokią išvaizdą:

Raskite ~ -name ".*"

Ieškokite failų „Linux“ pagal leidimus

Kartais reikia filtruoti tam tikros teisių kaukės katalogą. Pvz., Jei mums reikia rasti failus su atributu 0661, mes naudojame komandą:

Rasti . -Perm 0661

Užduotis filtruoti failus su atributu „Tik skaitymui“ išspręsta taip:

Rasti /etc /user -erm /u = r

Bet kaip atrodys vykdomų failų ETC kataloge ieškoma:

Raskite ir tt -perm /a = x

Ieškokite failų pagal grupes/vartotojus

Administratorius dažnai turi susidurti su užduotimi ieškoti failų, kurie yra konkretaus vartotojo ir (arba) grupės nuosavybė. Ieškokite vartotojo:

Rasti . -Vartotojo „Slavko“

Vartotojų grupėms naudojamas kitas parametras:

Raskite /var -Group Devs

Ieškokite iki paskutinės pakeitimo datos

Matomas failo datos „Linux OS“ formatas yra būtent jo modifikavimo data (tas pats principas naudojamas „Windows“). Norėdami suformuoti sąrašą pagal datą, naudojama „mtime“ parinktis. Tarkime, kad prieš du mėnesius turime rasti failus, pakeistus:

Raskite /namuose -mtime 60

Tarp failo atributų yra jo paskutinio atradimo data (nepadarant pakeitimų). Tokius failus rodo ši komanda:

Raskite /namuose -ATIME 60

Taip pat galite nustatyti laiko intervalą. Norėdami ieškoti failų, modifikuotų prieš keturis - du mėnesius, mes naudojame direktyvą:

Raskite /HOME -MTime +60 -MTime -120

Bet kaip rasti šviežiai pakeistų failų (prieš dvi valandas):

Raskite /namuose -cmin 120

Ieškokite failų pagal dydį

Įtariama, kad kažkas naudoja diską filmams? Mes ieškome failų 1 dydžio.4 GB:

Raskite / -SIZE 1400M

Arba naudokite diapazoną:

Raskite / -dydis +1400m -2800m

Ieškokite tuščių failų/katalogų

Taip, nenustebkite. Užduotis atkurti užsakymą žiniasklaidoje yra būdinga ne tik „Android OS“. „Linux“ sprendžiama naudojant tokią direktyvą:

Rasti /var -tipo f -Empty

Veiksmų su rastais failais pavyzdys

„Linux“ komanda gali rekursyviai atlikti tam tikrus veiksmus su tais failais, paieška, kurios jūs vykdote. Norėdami vykdyti failo komandas, turite naudoti vykdymo parametrą. Taigi, Direktyva, kaip parodyti informaciją apie visus failus, naudojančius LS komandą, atrodys taip:

Rasti . -Exec ls -l \;

Bet kaip jūs galite ištrinti laikinus failus su nurodyta kauke kataloge /namuose /temp:

Rasti /tmp -tipo f -name "*.html ”-exec rm -f \;

Žinoma, pradedantiesiems, naudojant komandinę eilutę su daugybe parinkčių. Ir kaip išspręstumėte čia aprašytas problemas „Windows“? Tai tas pats. Šiuo aspektu „Linux“ aiškiai į priekį.